]> git.saurik.com Git - wxWidgets.git/commitdiff
don't statically link to SetMenuInfo(): it is not present in Win95/NT4
authorVadim Zeitlin <vadim@wxwidgets.org>
Thu, 9 Jun 2005 20:13:20 +0000 (20:13 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Thu, 9 Jun 2005 20:13:20 +0000 (20:13 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34617 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/msw/menu.cpp

index a4a350915f99e08f209232d5111ce9c06010f097..4880a3807bac0b5766c70a2eaa9a21e36c9cefbd 100644 (file)
 // other standard headers
 #include <string.h>
 
 // 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
 #ifndef MNS_CHECKORBMP
     #define MNS_CHECKORBMP 0x04000000
 #endif
@@ -435,10 +439,19 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos)
                     // case in wx API
                     WinStruct<MENUINFO> mi;
 
                     // 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
 
                     // tell the item that it's not really owner-drawn but only
                     // needs to draw its bitmap, the rest is done by Windows