item data casten
-
static char orginalDaten[100]; strcpy(orginalDaten,"hm, dreckig"); mii2.cbSize=sizeof(MENUITEMINFO); mii2.fMask = MIIM_ID |MIIM_FTYPE|MIIM_DATA; mii2.fType=MF_OWNERDRAW; mii2.wID=23; mii2.dwItemData=(char)orginalDaten; InsertMenuItem(hMenu, 2,1,&mii2); case WM_DRAWITEM: static LPDRAWITEMSTRUCT str=(LPDRAWITEMSTRUCT) lParam; if(str->itemID) { MENUITEMINFO *buf; GetMenuItemInfo(hMenu,str->itemID,true,buf); char *zeiger=(char*)&str->itemData; MessageBox(0,zeiger,0,0); }Die MessageBox gibt nicht den Text "hm, dreckig" aus. Wieso nicht?
-
MENUITEMINFO *buf;Nicht initialisiert.
-
MENUITEMINFO buf; buf.cbSize=sizeof(MENUITEMINFO); GetMenuItemInfo(hMenu,str->itemID,false,&buf); char *zeiger=(char*)&str->itemData; MessageBox(0,zeiger,0,0);Funktioniert immer noch nicht.
-
MENUITEMINFO buf; buf.cbSize=sizeof(MENUITEMINFO); GetMenuItemInfo(hMenu,str->itemID,false,&buf); char *zeiger=(char*)buf.dwItemData; MessageBox(0,zeiger,0,0);So, und es geht immer noch nicht.
-
Wofür machst du eigentlich den GetMenuItemInfo Aufruf wenn du dann die Informationen gar nicht benutzt?
-
Ich weiß, deswegen habe ich nochmal neuen Beitrag dazu geschrieben.

-
GetMenuString ?!
-
.... und wenn es eine Structur wäre...grml
-
To retrieve a menu item of type MFT_STRING, first find the size of the string by setting the dwTypeData member of MENUITEMINFO to NULL and then calling GetMenuItemInfo. The value of cch+1 is the size needed. Then allocate a buffer of this size, place the pointer to the buffer in dwTypeData, increment cch by one, and then call GetMenuItemInfo once again to fill the buffer with the string.
-
...Ich habe ein Objekt das alle Möglichen Sachen enthält.
Das Objekt wird in mii2.dwItemData abgelegt bzw. konvertiert und soll bei der WM_DRAWITEM message mitgelifert werden. -> Da nützt mir ..._STRING nicht viel...