2009-11-28 23 views
0

我正在使用下面的函数..而不是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; //函数

回答

0

25个字符对于完整路径长度似乎有点短,我会使用MAX_PATH。

+0

tanx for ur reply..but我修复了这个问题...我用Edit对话框模式控制..我尝试了SetdlgItemText(....)而不是dlg.SetdlgItemText ..它的工作gr8 – kiddo 2009-11-28 04:37:04

+0

我很高兴你得到它的工作,但它似乎并不像这个问题会导致运行时错误。 – 2009-11-28 23:11:59

相关问题