MFC 选择文件对话框/打开目录对话框

文件浏览对话框

AfxMessageBox("choice file");


CString strFile = _T("");

    CFileDialog    dlgFile(TRUE, NULL, NULL, OFN_HIDEREADONLY, _T("Describe Files (*.cfg)|*.cfg|All Files (*.*)|*.*||"), NULL);


    if (dlgFile.DoModal())
    {
        strFile = dlgFile.GetPathName();
    }

    AfxMessageBox(strFile);



目录选择对话框(可用于下载保存等)

void CMainFrame::OnBrowseFile() 
{
// TODO: Add your command handler code here
TCHAR   szPath[MAX_PATH]={0};
LPITEMIDLIST   pitem;
BROWSEINFO   info;
::ZeroMemory(&info,sizeof(info));
info.hwndOwner=this->m_hWnd;  
info.lpszTitle=_T( "Choose   the   Folder: ");
//info.ulFlags=BIF_USENEWUI;
info.pszDisplayName = szPath;
//info.lpfn=BrowseCallbackProc;
//info.lParam= long(&DefaultDir);
if(pitem=::SHBrowseForFolder(&info))
{
 ::SHGetPathFromIDList(pitem,szPath);
 UpdateData(FALSE);

AfxMessageBox(szPath);
}


以下来自http://zhidao.baidu.com/question/107162793.html

//显示文件夹浏览对话框//用shell提供的SHBrowseForFolder,需要一个指向BROWSEINFO结构的指针/* BROWSEINFO结构HWND hwndOwner,指定对话框的父窗口的句柄LPCITEMIDLIST pidlRoot,指定打开浏览的根目录,若为NULL,表示桌面LPSTR pszDisplayName,指定一个缓冲区,接收用户选择的目录的显示名称LPCSTR lpszTitle,树形视图上方显示的文字UINT ulFlags,指定属性BFFCALLBACK Lpfn,指定回调函数,发生某些事件时,指定的函数被调用,允许程序进一步定制对话框的行为LPARAM lParam,若指定回调函数,参数值传递给回调函数int iImage,代表用户选择的文件夹对象的图标在系统图标列表中的索引 */int main(){ BROWSEINFO bi; ::ZeroMemory(&bi,sizeof(bi)); //将bi结构清零 char szSelPath[MAX_PATH]; //被选择文件夹对象名称的缓冲区 bi.pszDisplayName=szSelPath; LPITEMIDLIST pNetHoodIDL; ::SHGetSpecialFolderLocation(NULL,CSIDL_HISTORY,&pNetHoodIDL); //根文件夹为历史文件夹 bi.pidlRoot=pNetHoodIDL; bi.lpszTitle="Luoguohui "; //提示字符串 bi.ulFlags=BIF_BROWSEINCLUDEFILES| //允许选择文件对象 BIF_EDITBOX| //显示编辑框 BIF_STATUSTEXT| //显示状态文本 BIF_VALIDATE; //校验编辑框中的输入 LPITEMIDLIST pidlSel=::SHBrowseForFolder(&bi); //打开文件夹浏览对话框 if(pidlSel!=NULL) { cout<<"Selected:"<<szSelPath<<endl; CComPtr<IMalloc> pMalloc; ::SHGetMalloc(&pMalloc); pMalloc->Free(pidlSel); //释放资源 } return 0;}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值