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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章