Я использую визуальную студию 2008... Я пытаюсь получить путь к папке для моего выходного файла в моем дизайне... Я знаю, что есть класс с именем CFolderDialog... но он не работает в моем pgm.. должен ли я включать какие-либо заголовочный файл, чтобы получить это ... если ДА, может ли кто-нибудь сказать мне, как включить в визуальную студию 2008 ... пожалуйста, помогите мне
Как получить FolderPath в приложении MFC
comment
Каким образом он не работает? Пожалуйста, дайте более подробную информацию, например, ошибку компилятора. И, возможно, показать код.
- person Alex Deem   schedule 28.11.2009
Ответы (1)
Забудьте о CFolderdialog.. вместо этого.. я использую другой, чтобы получить путь к папке... проверьте мой код ниже.... я получаю ошибку времени выполнения, когда пытаюсь напечатать имя пути к папке в поле редактирования..
недействительными 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]; BOOL ретвал;
//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.
}
person
kiddo
schedule
28.11.2009