The MEASUREITEMSTRUCT and DRAWITEMSTRUCT were filled wrong.
diff --git a/controls/menu.c b/controls/menu.c
index d300b3e..e71a90f 100644
--- a/controls/menu.c
+++ b/controls/menu.c
@@ -238,6 +238,8 @@
/* Nothing */ ;
else
dsprintf(menu, ", Text=%p", mp->text);
+ if (mp->dwItemData)
+ dsprintf(menu, ", ItemData=0x%08lx", mp->dwItemData);
dsprintf(menu, " }");
} else {
dsprintf(menu, "NULL");
@@ -676,10 +678,11 @@
{
MEASUREITEMSTRUCT mis;
mis.CtlType = ODT_MENU;
+ mis.CtlID = 0;
mis.itemID = lpitem->wID;
- mis.itemData = (DWORD)lpitem->text;
- mis.itemHeight = 16;
- mis.itemWidth = 30;
+ mis.itemData = (DWORD)lpitem->dwItemData;
+ mis.itemHeight = 0;
+ mis.itemWidth = 0;
SendMessageA( hwndOwner, WM_MEASUREITEM, 0, (LPARAM)&mis );
lpitem->rect.bottom += mis.itemHeight;
lpitem->rect.right += mis.itemWidth;
@@ -932,8 +935,9 @@
DRAWITEMSTRUCT dis;
dis.CtlType = ODT_MENU;
+ dis.CtlID = 0;
dis.itemID = lpitem->wID;
- dis.itemData = (DWORD)lpitem->text;
+ dis.itemData = (DWORD)lpitem->dwItemData;
dis.itemState = 0;
if (lpitem->fState & MF_CHECKED) dis.itemState |= ODS_CHECKED;
if (lpitem->fState & MF_GRAYED) dis.itemState |= ODS_GRAYED;