【问题标题】:Not able to Print the folder path in EditBox- MFC无法在 EditBox-MFC 中打印文件夹路径
【发布时间】:2010-12-21 03:48:53
【问题描述】:

我使用以下函数..而不是 CFolderDialog.. 来获取文件夹路径...检查下面的代码....当我尝试在编辑框中打印文件夹路径名时出现运行时错误..

无效 CSelfExtractorUIDlg::OnBnClickedButton1() {

CDialog dlg;

HWND hwnd = NULL; LPCTSTR szCurrent = (LPCTSTR)malloc(25*sizeof(TCHAR)); szCurrent = NULL; LPTSTR szPath = (LPTSTR)malloc(25*sizeof(TCHAR));布尔值 检查 = BrowseForFolder(hwnd,szCurrent,szPath); 如果(检查==真){ dlg.SetDlgItemTextW(IDC_EDIT1,szPath); }

}

BOOL BrowseForFolder(HWND hwnd, LPCTSTR szCurrent, LPTSTR szPath) { 浏览信息 bi = { 0 }; LPITEMIDLIST pidl; TCHAR szDisplay[256];布尔值 回复;

//CoInitialize();

bi.hwndOwner = hwnd; bi.pszDisplayName = szDisplay; bi.lpszTitle = TEXT("请 选择一个文件夹。"); bi.ulFlags
= BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE; bi.lpfn
= 浏览回调程序; bi.lParam = (LPARAM) szCurrent;

pidl = SHBrowseForFolder(&bi);

如果 (NULL != pidl) { retval = SHGetPathFromIDList(pidl, szPath); CoTaskMemFree(pidl); } 别的 { retval = 假; }

如果(!retval){ szPath[0] = TEXT('\0'); }

CoUninitialize();返回 retval;

} 静态整数回调 BrowseCallbackProc(HWND hwnd,UINT uMsg、LPARAM lParam、LPARAM lpData) { // 如果 BFFM_INITIALIZED 消息是 收到 // 设置开始的路径 路径。
开关(uMsg){案例 BFFM_INITIALIZED: { if (NULL != lpData) { SendMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData); } } }

返回 0; // 函数

【问题讨论】:

    标签: mfc folderbrowserdialog


    【解决方案1】:

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

    【讨论】:

    • tanx 为您的回复..但我解决了问题...我使用对话框模式编辑控件..我尝试 SetdlgItemText(....) 而不是 dlg.SetdlgItemText..它的工作gr8
    • 我很高兴你让它工作了,但看起来这个问题不会导致运行时错误。
    猜你喜欢
    • 1970-01-01
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    相关资源
    最近更新 更多