Не удалось напечатать путь к папке в EditBox-MFC - PullRequest
0 голосов
/ 28 ноября 2009

Я использую следующую функцию .. вместо CFolderDialog .. чтобы получить путь к папке ... проверьте мой код ниже .... У меня появляется ошибка времени выполнения, когда я пытаюсь напечатать путь к папке в поле для редактирования ..

недействительным CSelfExtractorUIDlg :: OnBnClickedButton1 () {

CDialog dlg;

HWND hwnd = NULL; LPCTSTR szCurrent = (LPCTSTR) таНос (25 * SizeOf (TCHAR)); szCurrent = NULL; LPTSTR szPath = (LPTSTR) таНос (25 * SizeOf (TCHAR)); BOOL проверить = BrowseForFolder (HWND, szCurrent, szPath); if (отметьте == 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 ("Пожалуйста, выберите папку. "); 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); } еще { retval = FALSE; }

if (! Retval) { szPath [0] = TEXT ('\ 0'); }

CoUninitialize (); обратный возврат;

} 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); } }}

возврат 0; // Функция

1 Ответ

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

25 символов кажутся немного короткими для полной длины пути, я бы использовал MAX_PATH.

...