編集の要約なし |
|||
| 1行目: | 1行目: | ||
== サンプルコード == | == サンプルコード(メインメニュー項目の無効化) == | ||
<source lang="c++"> | <source lang="c++"> | ||
// CApp.cpp | // CApp.cpp | ||
| 93行目: | 93行目: | ||
}; | }; | ||
</source> | </source> | ||
<br><br> | |||
== サンプルコード(サブメニュー項目の無効化) == | |||
<source lang="c++"> | |||
CWnd* pWnd = AfxGetMainWnd(); | |||
CMenu* pMenu = pWnd->GetMenu(); | |||
int MenuCount = pMenu->GetMenuItemCount(); | |||
for(int i = 0; i < MenuCount; i++) | |||
{ | |||
CString strSubMenu; | |||
pMenu->GetMenuString(i, strSubMenu, MF_BYPOSITION); | |||
if(0 == strSubMenu.Compare(_T("TEST"))) | |||
{ | |||
pMenu->EnableMenuItem(i, MF_BYPOSITION | MF_DISABLED | MF_GRAYED); // 状態を設定する | |||
pWnd->DrawMenuBar(); | |||
} | |||
} | |||
</source> | |||
<br> | |||
サブメニュー項目はリソースIDを持っていないので、直接無効化することができない。<br> | |||
上位のCMenuコントロールを用いて位置を指定して無効化する。<br> | |||
<br> | |||
上記のサンプルコードでは、TESTという名前の項目を検索して無効化している。<br> | |||
また、下位の階層の項目を変更したい場合はpMenu->GetSubMenuで取得して、更に検索する。<br> | |||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:MFC]] | [[カテゴリ:MFC]] | ||