其格式如下
OPENFILENAME ofn
char path[MAX_PATH]
static TCHAR szFilter[] = TEXT ("Text Files (*.TXT)\0*.txt\0") \
TEXT ("ASCII Files (*.ASC)\0*.asc\0") \
TEXT ("All Files (*.*)\0*.*\0\0")
ofn.lStructSize = sizeof (OPENFILENAME)
ofn.hwndOwner = hwnd
ofn.hInstance = NULL
ofn.lpstrFilter = szFilter
ofn.lpstrCustomFilter = NULL
ofn.nMaxCustFilter = 0
ofn.nFilterIndex = 0
ofn.nMaxFile = MAX_PATH
ofn.nMaxFileTitle = MAX_PATH
ofn.lpstrInitialDir = NULL
ofn.lpstrTitle = NULL
ofn.Flags = 0 // Set in Open and Close functions
ofn.nFileOffset = 0
ofn.nFileExtension = 0
ofn.lpstrDefExt = TEXT ("txt")
ofn.lCustData = 0L
ofn.lpfnHook = NULL
ofn.lpTemplateName = NULL
ofn.hwndOwner = hwnd
ofn.lpstrFile = path
ofn.lpstrFileTitle = NULL
ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT
GetOpenFileName (&ofn) //打开文件对话框
GetSaveFileName(&ofn)//保存文件对话框
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")
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)