From 243ad5c89e9107cbc6703ab828adc24c1b527a12 Mon Sep 17 00:00:00 2001 From: Michael Wetherell Date: Tue, 5 Jun 2007 16:40:12 +0000 Subject: [PATCH] Add to patch 1671804 (menu alignment for VC6) so that it does work, and move it to msw/missing.h. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@46333 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/msw/missing.h | 34 ++++++++++++++++++++++++++++++++++ src/msw/menu.cpp | 34 +++++++++------------------------- 2 files changed, 43 insertions(+), 25 deletions(-) diff --git a/include/wx/msw/missing.h b/include/wx/msw/missing.h index f2424edc72..0e5e00c831 100644 --- a/include/wx/msw/missing.h +++ b/include/wx/msw/missing.h @@ -138,6 +138,40 @@ #define LWA_ALPHA 2 #endif +#if defined __VISUALC__ && __VISUALC__ <= 1200 && !defined MIIM_BITMAP +#define MIIM_STRING 0x00000040 +#define MIIM_BITMAP 0x00000080 +#define MIIM_FTYPE 0x00000100 +#define HBMMENU_CALLBACK ((HBITMAP) -1) +typedef struct tagMENUINFO +{ + DWORD cbSize; + DWORD fMask; + DWORD dwStyle; + UINT cyMax; + HBRUSH hbrBack; + DWORD dwContextHelpID; + DWORD dwMenuData; +} MENUINFO, FAR *LPMENUINFO; +struct wxMENUITEMINFO_ +{ + UINT cbSize; + UINT fMask; + UINT fType; + UINT fState; + UINT wID; + HMENU hSubMenu; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + DWORD dwItemData; + LPTSTR dwTypeData; + UINT cch; + HBITMAP hbmpItem; +}; +#else +#define wxMENUITEMINFO_ MENUITEMINFO +#endif + /* * The following are required for VC++ 5 when the PSDK is not available. */ diff --git a/src/msw/menu.cpp b/src/msw/menu.cpp index 46ec935638..45650b97c5 100644 --- a/src/msw/menu.cpp +++ b/src/msw/menu.cpp @@ -59,25 +59,7 @@ // other standard headers #include -//VC6 needs these defining, though they are in winuser.h -#ifndef MIIM_BITMAP -#define MIIM_STRING 0x00000040 -#define MIIM_BITMAP 0x00000080 -#define MIIM_FTYPE 0x00000100 -#define HBMMENU_CALLBACK ((HBITMAP) -1) -typedef struct tagMENUINFO -{ - DWORD cbSize; - DWORD fMask; - DWORD dwStyle; - UINT cyMax; - HBRUSH hbrBack; - DWORD dwContextHelpID; - DWORD dwMenuData; -} MENUINFO, FAR *LPMENUINFO; -#endif - -#if wxUSE_OWNER_DRAWN +#if wxUSE_OWNER_DRAWN && defined(MIIM_BITMAP) #include "wx/dynlib.h" #endif @@ -453,10 +435,11 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos) { // try to use InsertMenuItem() as it's guaranteed to look correct // while our owner-drawn code is not -#ifndef __DMC__ - // DMC at march 2007 doesn't have HBITMAP hbmpItem tagMENUITEMINFOA /W - // MIIM_BITMAP only works under WinME/2000+ - WinStruct mii; + + // first compile-time check + // MIIM_BITMAP only works under Win98/2000+ +#if defined(MIIM_BITMAP) && (_WIN32_WINNT >= 0x0500) + WinStruct mii; if ( wxGetWinVersion() >= wxWinVersion_98 ) { mii.fMask = MIIM_STRING | MIIM_DATA | MIIM_BITMAP; @@ -496,7 +479,8 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos) } mii.hbmpItem = HBMMENU_CALLBACK; - ok = ::InsertMenuItem(GetHmenu(), pos, TRUE /* by pos */, &mii); + ok = ::InsertMenuItem(GetHmenu(), pos, TRUE /* by pos */, + (MENUITEMINFO*)&mii); if ( !ok ) { wxLogLastError(wxT("InsertMenuItem()")); @@ -528,7 +512,7 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos) pItem->ResetOwnerDrawn(); } } -#endif // __DMC__ +#endif // defined(MIIM_BITMAP) && (_WIN32_WINNT >= 0x0500) } if ( !ok )