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