【问题标题】:How to get the FolderPath in MFC application如何在 MFC 应用程序中获取 FolderPath
【发布时间】:2009-11-28 04:04:45
【问题描述】:

我正在使用 Visual Studio 2008...我正在尝试在我的设计中获取我的输出文件的文件夹路径...我知道有一个名为 CFolderDialog 的类 ..但它在我的 pgm 中不起作用..应该我包含任何头文件以获取它..如果是,任何人都可以告诉我如何包含在 Visual Studio 2008 中..请帮助我

【问题讨论】:

  • 以什么方式不起作用?请提供更多详细信息,例如编译器错误。也许会显示一些代码。

标签: visual-studio-2008 header-files folderbrowserdialog


【解决方案1】:

忘记 CFolderdialog.. 而不是那个..iam 使用另一个来获取文件夹路径...检查我下面的代码....当我尝试在编辑中打印文件夹路径名时出现运行时错误盒子..

void 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);
if( check == TRUE)
{
    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("Please choose a folder.");
bi.ulFlags        = BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE;
bi.lpfn           = BrowseCallbackProc;
bi.lParam         = (LPARAM) szCurrent;

pidl = SHBrowseForFolder(&bi);

if (NULL != pidl)
{
    retval = SHGetPathFromIDList(pidl, szPath);
    CoTaskMemFree(pidl);
}
else
{
    retval = FALSE;
}

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

CoUninitialize();
return retval;

} 静态 int CALLBACK BrowseCallbackProc(HWND hwnd,UINT uMsg, LPARAM lParam, LPARAM lpData) { // 如果收到 BFFM_INITIALIZED 消息 // 将路径设置为起始路径。 开关(微信) { 案例 BFFM_INITIALIZED: { 如果(NULL!= lpData) { SendMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData); } } }

return 0; // The function should always return 0.

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多