我正在使用下面的函數..而不是CFolderDialog ..來獲取文件夾路徑...檢查我的代碼下面....我得到一個運行時錯誤我嘗試在編輯框中toprint文件夾路徑名..無法在EditBox- MFC中打印文件夾路徑
無效 CSelfExtractorUIDlg :: OnBnClickedButton1(){
CDialog的DLG;
HWND hwnd = NULL; LPCTSTR szCurrent = (LPCTSTR)malloc(25 * sizeof(TCHAR)); szCurrent = NULL; LPTSTR szPath = (LPTSTR)malloc(25 * sizeof(TCHAR)); BOOL check = BrowseForFolder(hwnd,szCurrent,szPath); (檢查== TRUE){ dlg.SetDlgItemTextW(IDC_EDIT1,szPath); }
}
BOOL BrowseForFolder(HWND HWND, LPCTSTR szCurrent,LPTSTR szPath){ BROWSEINFO BI = {0}; LPITEMIDLIST pidl; TCHAR szDisplay [256]; BOOL retval;
// CoInitialize();
bi.hwndOwner = hwnd; bi.pszDisplayName = szDisplay; bi.lpszTitle = TEXT(「請 選擇一個文件夾。」); bi.ulFlags
= BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE; bi.lpfn
= BrowseCallbackProc; bi.lParam =(LPARAM)szCurrent;pidl = SHBrowseForFolder(& bi);
if(NULL!= pidl){retal = SHGetPathFromIDList(pidl,szPath); CoTaskMemFree(pidl); } else { retval = FALSE; }
if(!retval){ szPath [0] = TEXT('\ 0'); }
CoUninitialize();返回retval;
}靜態INT CALLBACK BrowseCallbackProc(HWND HWND,UINT uMsg,LPARAM lParam的,LPARAM的lpData){ //如果BFFM_INITIALIZED消息是 接收//路徑設定爲出發 路徑。
switch(uMsg){case BFFM_INITIALIZED:{if(NULL!= lpData){SendMessage(hwnd, BFFM_SETSELECTION,TRUE,lpData); } }}return 0; //函數
tanx for ur reply..but我修復了這個問題...我用Edit對話框模式控制..我嘗試了SetdlgItemText(....)而不是dlg.SetdlgItemText ..它的工作gr8 – kiddo 2009-11-28 04:37:04
我很高興你得到它的工作,但它似乎並不像這個問題會導致運行時錯誤。 – 2009-11-28 23:11:59