Как получить FolderPath в приложении MFC

Я использую визуальную студию 2008... Я пытаюсь получить путь к папке для моего выходного файла в моем дизайне... Я знаю, что есть класс с именем CFolderDialog... но он не работает в моем pgm.. должен ли я включать какие-либо заголовочный файл, чтобы получить это ... если ДА, может ли кто-нибудь сказать мне, как включить в визуальную студию 2008 ... пожалуйста, помогите мне


person kiddo    schedule 28.11.2009    source источник
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