Alexandre Julliard : user32: Don't truncate bitmap ids in InsertMenu.
Alexandre Julliard
julliard at winehq.org
Tue Jun 21 12:25:41 CDT 2011
Module: wine
Branch: master
Commit: 33ba7c07fb71b8c3b29ae150d94b3ef74cfa723d
URL: http://source.winehq.org/git/wine.git/?a=commit;h=33ba7c07fb71b8c3b29ae150d94b3ef74cfa723d
Author: Alexandre Julliard <julliard at winehq.org>
Date: Tue Jun 21 16:07:00 2011 +0200
user32: Don't truncate bitmap ids in InsertMenu.
---
dlls/user32/menu.c | 2 +-
dlls/user32/tests/menu.c | 13 +++++++++++++
2 files changed, 14 insertions(+), 1 deletions(-)
diff --git a/dlls/user32/menu.c b/dlls/user32/menu.c
index 24cd4e0..b0c7f78 100644
--- a/dlls/user32/menu.c
+++ b/dlls/user32/menu.c
@@ -3816,7 +3816,7 @@ static void MENU_mnu2mnuii( UINT flags, UINT_PTR id, LPCWSTR str,
pmii->dwTypeData = (LPWSTR)str;
} else if( flags & MFT_BITMAP){
pmii->fMask |= MIIM_BITMAP | MIIM_STRING;
- pmii->hbmpItem = ULongToHandle(LOWORD(str));
+ pmii->hbmpItem = (HBITMAP)str;
}
if( flags & MF_OWNERDRAW){
pmii->fMask |= MIIM_DATA;
diff --git a/dlls/user32/tests/menu.c b/dlls/user32/tests/menu.c
index 26fe6fb..5c133f9 100644
--- a/dlls/user32/tests/menu.c
+++ b/dlls/user32/tests/menu.c
@@ -404,6 +404,7 @@ static void test_menu_ownerdraw(void)
int i,j,k;
BOOL ret;
HMENU hmenu;
+ MENUITEMINFO mii;
LONG leftcol;
HWND hwnd = CreateWindowEx(0, MAKEINTATOM(atomMenuCheckClass), NULL,
WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, 200, 200,
@@ -463,6 +464,18 @@ static void test_menu_ownerdraw(void)
"Height is incorrect. Got %d expected %d\n",
MOD_rc[0].bottom - MOD_rc[0].top, MOD_SIZE);
+ /* test owner-drawn callback bitmap */
+ ModifyMenu( hmenu, 1, MF_BYPOSITION | MFT_BITMAP, 1, (LPCSTR)HBMMENU_CALLBACK );
+ mii.cbSize = sizeof(mii);
+ mii.fMask = MIIM_BITMAP | MIIM_FTYPE | MIIM_ID;
+ if (GetMenuItemInfoA( hmenu, 1, TRUE, &mii ))
+ {
+ ok( mii.fType == MFT_BITMAP, "wrong type %x\n", mii.fType );
+ ok( mii.wID == 1, "wrong id %x\n", mii.wID );
+ ok( mii.hbmpItem == HBMMENU_CALLBACK, "wrong data %p\n", mii.hbmpItem );
+ }
+ TrackPopupMenu( hmenu, TPM_RETURNCMD, 100,100, 0, hwnd, NULL);
+
/* test width/height of an ownerdraw menu bar as well */
ret = DestroyMenu(hmenu);
ok(ret, "DestroyMenu failed with error %d\n", GetLastError());
More information about the wine-cvs
mailing list