GetMenuItemInfoの構造体の設定 – プログラミング – Home

通知
すべてクリア

[解決済] GetMenuItemInfoの構造体の設定


ぴっつ
 ぴっつ
(@ぴっつ)
ゲスト
結合: 23年前
投稿: 2
Topic starter  

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) …


引用未解決
トピックタグ
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

セパレータかどうかを調べるということであれば、GetMenuStateの戻り値をみれば
事足りるのではないでしょうか。

CMenu *pMenu = GetMenu();
CMenu *pSubMenu = pMenu->GetSubMenu(0);
UINT uState = pSubMenu->GetMenuState(4, MF_BYPOSITION);
if(uState & MF_SEPARATOR)
MessageBox(せぱれーた);


返信引用
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

補足です。
ぴっつさんの方法でうまくいかない場合、GetLastError()でエラー値を見てください。
submenu または Index が、予想外の値になっているのではないかと...

ちなみに、

item.fType= MFT_SEPARATOR;
item.dwTypeData=NULL;
item.cch=0;

は不要です。
GetMenuItemInfoが設定してくれます。


返信引用
ぴっつ
 ぴっつ
(@ぴっつ)
ゲスト
結合: 23年前
投稿: 2
Topic starter  

ご回答有り難うございます。
GetMenuState関数を使って判定できるようになりました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました