]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/menu.cpp
don't redeclare struct tm if it's already declared in std headers; declare and define...
[wxWidgets.git] / src / msw / menu.cpp
index a4a350915f99e08f209232d5111ce9c06010f097..ee300d548cfc406bfc7c2c85d6339b83ffa01e5a 100644 (file)
 // other standard headers
 #include <string.h>
 
+#if wxUSE_OWNER_DRAWN && defined(MIIM_BITMAP)
+    #include "wx/dynlib.h"
+#endif
+
 #ifndef MNS_CHECKORBMP
     #define MNS_CHECKORBMP 0x04000000
 #endif
@@ -382,7 +386,7 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos)
     if ( pos == (size_t)-1 )
     {
         // append at the end
-        pos = ::GetMenuItemCount(GetHmenu());
+        pos = GetMenuItemCount();
     }
 
     BOOL ok = false;
@@ -435,10 +439,19 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos)
                     // case in wx API
                     WinStruct<MENUINFO> mi;
 
-                    mi.fMask = MIM_STYLE;
-                    mi.dwStyle = MNS_CHECKORBMP;
-                    if ( !::SetMenuInfo(GetHmenu(), &mi) )
-                        wxLogLastError(_T("SetMenuInfo(MNS_NOCHECK)"));
+                    // don't call SetMenuInfo() directly, this would prevent
+                    // the app from starting up under Windows 95/NT 4
+                    typedef BOOL (WINAPI *SetMenuInfo_t)(HMENU, MENUINFO *);
+
+                    wxDynamicLibrary dllUser(_T("user32"));
+                    wxDYNLIB_FUNCTION(SetMenuInfo_t, SetMenuInfo, dllUser);
+                    if ( pfnSetMenuInfo )
+                    {
+                        mi.fMask = MIM_STYLE;
+                        mi.dwStyle = MNS_CHECKORBMP;
+                        if ( !(*pfnSetMenuInfo)(GetHmenu(), &mi) )
+                            wxLogLastError(_T("SetMenuInfo(MNS_NOCHECK)"));
+                    }
 
                     // tell the item that it's not really owner-drawn but only
                     // needs to draw its bitmap, the rest is done by Windows