我正在使用 Visual Studio 2008 ...我正在尝试在我的设计中获取我的输出文件的文件夹路径 ...我知道有一个名为 CFolderDialog 的类 ..但它在我的 pgm 中不起作用..我应该包括任何头文件为了得到那个..如果是,任何人都可以告诉我如何包含在Visual Studio 2008中..请帮助我
问问题
1073 次
1 回答
0
忘记CFolderdialog ..而不是那个..iam使用另一个来获取文件夹路径...检查我下面的代码....当我尝试在编辑框中打印文件夹路径名时出现运行时错误..
无效 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) { 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;
} static 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; // The function should always return 0.
}
于 2009-11-28T04:20:14.827 回答