Visual studio 2008 如何在MFC应用程序中获取FolderPath

Visual studio 2008 如何在MFC应用程序中获取FolderPath,visual-studio-2008,header-files,folderbrowserdialog,Visual Studio 2008,Header Files,Folderbrowserdialog,我正在使用visual studio 2008…我正在尝试在我的设计中获取输出文件的文件夹路径…我知道有一个名为CFolderDialog的类..但它在我的pgm中不起作用..我是否应该包含任何头文件以获取该文件..如果是,有谁能告诉我如何在visual studio 2008中包含..请帮助我忘记CFolderdialog..而不是..我正在使用另一个来获取文件夹路径…请检查下面的代码..当我尝试在编辑框中打印文件夹路径名称时遇到运行时错误 void CSelfExtractorUIDlg::

我正在使用visual studio 2008…我正在尝试在我的设计中获取输出文件的文件夹路径…我知道有一个名为CFolderDialog的类..但它在我的pgm中不起作用..我是否应该包含任何头文件以获取该文件..如果是,有谁能告诉我如何在visual studio 2008中包含..请帮助我忘记CFolderdialog..而不是..我正在使用另一个来获取文件夹路径…请检查下面的代码..当我尝试在编辑框中打印文件夹路径名称时遇到运行时错误

void CSelfExtractorUIDlg::OnBnClickedButton1() {

}

BOOL BrowseForFolder(HWND HWND、LPCTSTR szCurrent、LPTSTR szPath) { BROWSEINFO 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回调BrowseCallbackProc(HWND-HWND、UINT-uMsg、LPARAM-LPARAM、LPARAM-lpData) { //如果收到BFFM_初始化消息 //将路径设置为起始路径。 开关(uMsg) { 案例BFFM_已初始化: { 如果(NULL!=lpData) { SendMessage(hwnd、BFFM_SETSELECTION、TRUE、lpData); } } }


}

它以什么方式不起作用?请提供更多细节,例如编译器错误。并可能显示一些代码。
//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;
return 0; // The function should always return 0.