失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > VC++打开 保存文件对话框和浏览文件夹对话框

VC++打开 保存文件对话框和浏览文件夹对话框

时间:2024-02-07 08:18:44

相关推荐

VC++打开 保存文件对话框和浏览文件夹对话框

一。打开文件夹:

1。CFileDialog实现

CFileDialog hFileDlg(true,NULL ,

NULL,

OFN_FILEMUSTEXIST | OFN_READONLY | OFN_PATHMUSTEXIST,

TEXT("驱动文件 (*.sys)|*.sys|所有文件(*.*)|*.*|"),

NULL);

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);

}

如果觉得《VC++打开 保存文件对话框和浏览文件夹对话框》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。