Как получить FolderPath в приложении MFC - PullRequest
0 голосов
/ 28 ноября 2009

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

1 Ответ

0 голосов
/ 28 ноября 2009

Забудьте о CFolderdialog ... вместо этого .. я использую другой, чтобы получить путь к папке ... проверьте мой код ниже .... я получаю ошибку во время выполнения, когда я пытаюсь напечатать имя пути к папке в редактировании коробка ..

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) { BROWSEINFO bi = {0}; LPITEMIDLIST pidl; TCHAR szDisplay [256]; BOOL retval;

//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 // установить путь к начальному пути. переключатель (мсг) { case BFFM_INITIALIZED: { if (NULL! = lpData) { SendMessage (hwnd, BFFM_SETSELECTION, TRUE, lpData); } } }

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

}

...