NT4でメニューアイテムの種類を(セパレータかどうか)判定しようとしていますが
GetMenuItemInfo関数が成功しません。
おそらくはMENUITEMINFO構造体の設定と思いますが…
MENUITEMINFO item;
ZeroMemory(&item,sizeof(item));
item.cbSize=sizeof(item);
item.fMask= MIIM_TYPE ;
item.fType= MFT_SEPARATOR;
item.dwTypeData=NULL;
item.cch=0;
BOOL n =submenu->GetMenuItemInfo(Index,&item,TRUE);
if (item.dwTypeData & MFT_STRING) …
セパレータかどうかを調べるということであれば、GetMenuStateの戻り値をみれば
事足りるのではないでしょうか。
CMenu *pMenu = GetMenu();
CMenu *pSubMenu = pMenu->GetSubMenu(0);
UINT uState = pSubMenu->GetMenuState(4, MF_BYPOSITION);
if(uState & MF_SEPARATOR)
MessageBox(せぱれーた);
補足です。
ぴっつさんの方法でうまくいかない場合、GetLastError()でエラー値を見てください。
submenu または Index が、予想外の値になっているのではないかと...
ちなみに、
item.fType= MFT_SEPARATOR;
item.dwTypeData=NULL;
item.cch=0;
は不要です。
GetMenuItemInfoが設定してくれます。
ご回答有り難うございます。
GetMenuState関数を使って判定できるようになりました。