vc中如何打开文件选择对话框?

vc中如何打开文件选择对话框?,第1张

这个可以:

CString filter_str = "txt files (*.txt)|*.txt|word files (*.doc)|*.doc||"

CFileDialog mSaveDlg(FALSE,NULL,NULL,NULL,filter_str,NULL)//初始化

mSaveDlg.DoModal()//显示

DWORD filter_num = mSaveDlg.m_ofn.nFilterIndex//返回的是当前选择的文件类型是第几个

filter_num -= 1//适应数组

char a[][9] = //文件类型数组

CString file_ext = a[filter_num]//获得文件类型的名称

int ext_length = file_ext.GetLength()//获得长度

MFC 打开保存文件对话框

一、打开文件夹:

1、CFileDialog实现

CFileDialog hFileDlg(TRUE,NULL,NULL,OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_READONLY,

TEXT("支持的图像文件 (*.jpg*.gif*.bmp...)|*.jpg*.gif*.bmp|专用Tiff图像文件(*.tiff*.tif)|*.tiff*.tif|所有文件(*.*)|*.*||"),NULL)

hFileDlg.m_ofn.nFilterIndex=1

hFileDlg.m_ofn.hwndOwner=m_hWnd

hFileDlg.m_ofn.lStructSize=sizeof(OPENFILENAME)

hFileDlg.m_ofn.lpstrTitle=TEXT("打开图像文件...\0")

hFileDlg.m_ofn.nMaxFile=MAX_PATH

if(hFileDlg.DoModal() == IDOK)

{

m_path = hFileDlg.GetPathName()

UpdateData(FALSE)

}

2、API实现

OPENFILENAMEA ofn

char szFile[260]

ZeroMemory(&ofn, sizeof(ofn))

ofn.lStructSize = sizeof(ofn)

ofn.hwndOwner = NULL

ofn.lpstrFile = szFile

ofn.lpstrFile[0] = '\0'

ofn.nMaxFile = sizeof(szFile)

ofn.lpstrFilter = "音频文件\0*.wma\0"

ofn.nFilterIndex = 1

ofn.lpstrFileTitle= NULL

ofn.nMaxFileTitle = 0

ofn.lpstrInitialDir = NULL

ofn.Flags = 0

if (GetOpenFileNameA(&ofn)==FALSE)

{

return S_FALSE

}

CString c_save_path=ofn.lpstrFile

二、保存文件

同上,只不过将

CFileDialog hFileDlg(true,NULL 改为 CFileDialog hFileDlg(false,NULL,

或者将GetOpenFileNameA改为GetSaveFileNameA,即可。

三、浏览文件夹对话框

//回调函数

int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)

{

if(uMsg==BFFM_SELCHANGED||uMsg==BFFM_INITIALIZED)

{

if(uMsg==BFFM_INITIALIZED)

{

::SendMessage(hwnd,BFFM_SETSELECTION,TRUE,LPARAM(lpData))

}

}

return 0

}

TCHAR chPath[255]//用来存储路径的字符串

CString strPath = ""

BROWSEINFO bInfo

GetModuleFileName(NULL,chPath,MAX_PATH)

strPath =chPath

ZeroMemory(&bInfo, sizeof(bInfo))

bInfo.hwndOwner = m_hWnd

bInfo.lpszTitle = _T("请选择路径: ")

bInfo.ulFlags = BIF_RETURNONLYFSDIRS|BIF_EDITBOX

bInfo.lpfn = BrowseCallbackProc

bInfo.lParam= (LPARAM)strPath.GetBuffer(strPath.GetLength())

LPITEMIDLIST lpDlist//用来保存返回信息的IDList

lpDlist = SHBrowseForFolder(&bInfo) //显示选择对话框

if(lpDlist != NULL) //用户按了确定按钮

{

SHGetPathFromIDList(lpDlist, chPath)//把项目标识列表转化成字符串

strPath = chPath//将TCHAR类型的字符串转换为CString类型的字符串

m_save_path=strPath

UpdateData(FALSE)

}

设置对话框的标题:

dlg.m_ofn.lpstrTitle = _T("Open Image")

函数就是DoModal( )。

virtual int DoModal( )

Return Value

IDOK or IDCANCEL. If IDCANCEL is returned, call the WindowsCommDlgExtendedError function to determine whether an error occurred.

IDOK and IDCANCEL are constants that indicate whether the user selected the OK or Cancel button.

Remarks

Call this function to display the Windows common file dialog box and allow the user to browse files and directories and enter a filename.

If you want to initialize the various file dialog-box options by setting members of the m_ofn structure, you should do this before calling DoModal, but after the dialog object is constructed.

When the user clicks the dialog box’s OK or Cancel buttons, or selects the Close option from the dialog box’s control menu, control is returned to your application. You can then call other member functions to retrieve the settings or information the user inputs into the dialog box.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11480356.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存