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
This commit is contained in:
Michael Wetherell
2007-06-05 16:40:12 +00:00
parent 1880068bb9
commit 243ad5c89e
2 changed files with 43 additions and 25 deletions

View File

@@ -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.
*/

View File

@@ -59,25 +59,7 @@
// other standard headers
#include <string.h>
//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<MENUITEMINFO> mii;
// first compile-time check
// MIIM_BITMAP only works under Win98/2000+
#if defined(MIIM_BITMAP) && (_WIN32_WINNT >= 0x0500)
WinStruct<wxMENUITEMINFO_> 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 )