概述
1.打开文件
CFileDialog ObjFile(TRUE, NULL, NULL, OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY,
_T("图片文件(*.png; *.jpg; *.jpeg; *.bmp)|*.png; *.jpg; *.jpeg; *.bmp|所有文件(*.*)|*.*||"), NULL);
if (IDOK == ObjFile.DoModal())
{
m_strImgPath = ObjFile.GetPathName();
}
在界面上使用这个按钮时, 会出现主界面的的标题栏变灰,也就是失焦,解决办法:
- 如果使用VS2008以上的版本就会有这个问题,这里最直接的处理办法:
将界面的CDialogEx全部替换成CDialog就解决(主观认为是扩展窗口类的小bug)
- 如果需要用到扩展类的一些特性,也可以用下面的方式替代:
CFileDialog ObjFile(TRUE, NULL, NULL, OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY,
NULL, theApp.GetMainWnd()->GetWindow (GW_HWNDPREV));
if (IDOK == ObjFile.DoModal())
{
...
SetFocus();
}
2.打开文件夹
CString strDirPath;
BROWSEINFO stDirInfo;
::ZeroMemory(&stDirInfo, sizeof(stDirInfo));
stDirInfo.pidlRoot = 0;
stDirInfo.lpszTitle = _T("选择文件存储路径:");
stDirInfo.ulFlags = BIF_RETURNONLYFSDIRS | BIF_EDITBOX | BIF_DONTGOBELOWDOMAIN;
stDirInfo.lpfn = nullptr;
LPITEMIDLIST lpidlBrowse = ::SHBrowseForFolder(&stDirInfo);
if (nullptr != lpidlBrowse)
{
if (::SHGetPathFromIDList(lpidlBrowse, strDirPath.GetBuffer(MAX_PATH)))
{
//获得文件夹路径strDirPath,由程式作者实现功能
}
::CoTaskMemFree(lpidlBrowse);
}
最后
以上就是冷静水池为你收集整理的MFC使用button选择文件(夹)的实现的全部内容,希望文章能够帮你解决MFC使用button选择文件(夹)的实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复