]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/dirdlg.cpp
Correct making the newly inserted menu item owner drawn in some cases.
[wxWidgets.git] / src / msw / dirdlg.cpp
index df4e4ddb541d05481fc7b00c4d8a194f5d6e271d..620d74b8eac451a7717dcf3cec273a0ee1813491 100644 (file)
@@ -4,7 +4,6 @@
 // Author:      Julian Smart
 // Modified by:
 // Created:     01/02/97
-// RCS-ID:      $Id$
 // Copyright:   (c) Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -30,6 +29,7 @@
     (defined(__HANDHELDPC__) && (_WIN32_WCE >= 500)))
 
 #include "wx/dirdlg.h"
+#include "wx/modalhook.h"
 
 #ifndef WX_PRECOMP
     #include "wx/utils.h"
@@ -50,7 +50,7 @@
 #if wxUSE_DYNLIB_CLASS && !defined(__WXWINCE__)
     #define wxUSE_IFILEDIALOG 1
 #else
-    #define wxUSE_IFILEDIALOG
+    #define wxUSE_IFILEDIALOG 0
 #endif
 
 #if wxUSE_IFILEDIALOG
@@ -72,11 +72,15 @@ struct IShellItem : public IUnknown
     virtual HRESULT wxSTDCALL Compare(IShellItem*, DWORD, int*) = 0;
 };
 
+#endif // #ifndef __IShellItem_INTERFACE_DEFINED__
+
+// Define this GUID in any case, even when __IShellItem_INTERFACE_DEFINED__ is
+// defined in the headers we might still not have it in the actual uuid.lib,
+// this happens with at least VC7 used with its original (i.e. not updated) SDK
+// and there is no harm in defining the GUID unconditionally.
 DEFINE_GUID(IID_IShellItem,
     0x43826D1E, 0xE718, 0x42EE, 0xBC, 0x55, 0xA1, 0xE2, 0x61, 0xC3, 0x7B, 0xFE);
 
-#endif // #ifndef __IShellItem_INTERFACE_DEFINED__
-
 struct IShellItemFilter;
 struct IFileDialogEvents;
 
@@ -216,6 +220,8 @@ void wxDirDialog::SetPath(const wxString& path)
 
 int wxDirDialog::ShowModal()
 {
+    WX_HOOK_MODAL_DIALOG();
+
     wxWindow* const parent = GetParent();
     WXHWND hWndParent = parent ? GetHwndOf(parent) : NULL;
 
@@ -259,7 +265,7 @@ int wxDirDialog::ShowSHBrowseForFolder(WXHWND owner)
 #endif
     bi.ulFlags        = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;
     bi.lpfn           = BrowseCallbackProc;
-    bi.lParam         = (LPARAM)m_path.wx_str(); // param for the callback
+    bi.lParam         = wxMSW_CONV_LPARAM(m_path); // param for the callback
 
     static const int verComCtl32 = wxApp::GetComCtl32Version();
 
@@ -486,7 +492,7 @@ BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lp, LPARAM pData)
                     }
 
                     SendMessage(hwnd, BFFM_SETSTATUSTEXT,
-                                0, (LPARAM)strDir.wx_str());
+                                0, wxMSW_CONV_LPARAM(strDir));
                 }
             }
             break;