SetMenuItemInfo()を使用してメニューを無効にする方法は何ですか?
SetMenuItemInfo()を使用してメニューを無効にするには、次の手順を取る必要があります。
- メニューハンドルを取得するには、GetMenu()関数を使用します。サブメニューの場合は、GetSubMenu()関数を使用してサブメニューのハンドルを取得します。
- GetMenuItemInfo()関数を使用して、メニューアイテムの情報を取得します。メニューハンドル、メニューアイテムのインデックス、そしてMENUITEMINFO構造体を渡す必要があります。
- メニューアイテムの情報を変更します:取得したメニューアイテム情報の構造体のfStateフィールドをMF_DISABLEDまたはMF_GRAYEDに設定すると、メニューアイテムを無効またはグレーにすることができます。
- SetMenuItemInfo()関数を使用して、メニュー項目の情報を設定します。メニューのハンドル、項目のインデックス、および変更後のMENUITEMINFO構造体を渡す必要があります。
以下はサンプルコードです:
// 获取菜单句柄
HMENU hMenu = GetMenu(hWnd);
// 获取菜单项的信息
MENUITEMINFO mii = { sizeof(MENUITEMINFO) };
mii.fMask = MIIM_STATE;
GetMenuItemInfo(hMenu, ID_MENU_ITEM, FALSE, &mii);
// 修改菜单项的信息
mii.fState |= MF_DISABLED;
// 设置菜单项的信息
SetMenuItemInfo(hMenu, ID_MENU_ITEM, FALSE, &mii);
上記のうち、hWndはウィンドウのハンドル、ID_MENU_ITEMは無効にしたいメニューアイテムのIDです。実際の状況に応じてこれらのパラメータを置き換えてください。