X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e66474166b164b9e11f9881e79d531bc5182ea31..b4a2ab728bf4627ab2b41385b69e31f10c1fd3b1:/src/msw/dirdlg.cpp diff --git a/src/msw/dirdlg.cpp b/src/msw/dirdlg.cpp index 4be95f9efe..5434b5d0d7 100644 --- a/src/msw/dirdlg.cpp +++ b/src/msw/dirdlg.cpp @@ -28,7 +28,7 @@ #include "wx/dirdlg.h" #endif -#if defined(__WIN95__) && !defined(__GNUWIN32__) +#if (defined(__WIN95__) && !defined(__GNUWIN32__))||defined(wxUSE_NORLANDER_HEADERS) #include "shlobj.h" // Win95 shell #endif @@ -46,6 +46,34 @@ IMPLEMENT_CLASS(wxDirDialog, wxDialog) #endif +static int CALLBACK +BrowseCallbackProc(HWND hwnd,UINT uMsg,LPARAM lp, LPARAM pData) + { + TCHAR szDir[MAX_PATH]; + + switch(uMsg) + { + case BFFM_INITIALIZED: + // We have put m_path into pData. + // TRUE -> passing char *, not dir id. + SendMessage(hwnd,BFFM_SETSELECTION,TRUE,pData); + break; + + case BFFM_SELCHANGED: + // Set the status window to the currently selected path. + if (SHGetPathFromIDList((LPITEMIDLIST) lp ,szDir)) + { + SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)szDir); + } + break; + + default: + break; + } + return 0; + } + + wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message, // const wxString& caption, const wxString& defaultPath, @@ -61,7 +89,7 @@ wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message, int wxDirDialog::ShowModal(void) { // Unfortunately Gnu-Win32 doesn't yet have COM support -#if defined(__WIN95__) && !defined(__GNUWIN32__) +#if (defined(__WIN95__) && !defined(__GNUWIN32__))||defined(wxUSE_NORLANDER_HEADERS) HWND hWnd = 0; if (m_parent) hWnd = (HWND) m_parent->GetHWND(); @@ -99,8 +127,8 @@ int wxDirDialog::ShowModal(void) bi.pszDisplayName = lpBuffer; bi.lpszTitle = m_message; // BC++ 4.52 says LPSTR, not LPTSTR? bi.ulFlags = 0; - bi.lpfn = NULL; - bi.lParam = 0; + bi.lpfn = BrowseCallbackProc; + bi.lParam = (LPARAM)m_path.c_str(); // Browse for a folder and return its PIDL. pidlBrowse = SHBrowseForFolder(&bi);