MFCダイアログベースのアプリケーションには、Visual Studioリソースエディターで作成されたメインメニューがあり、1つの場所に、実行時に作成された動的メニューがあります。次の画像に示すように、Visual Studioで作成されたメニューのすべての部分はモダンな外観であり、動的に作成されたサブメニューは古い外観です。
動的サブメニューを作成するための私のコードは次のようなものです(実際のコードではありませんが、実際のコードはそれほど重要ではありません):
CMenu subMenu;
subMenu.CreateMenu();
for (...)
{
subMenu.AppendMenu(
MF_STRING | (isChecked ? MF_CHECKED : MF_UNCHECKED),
<some menu ID>,
<some menu text>);
}
このサブメニューをそれが属する場所に挿入するには、次のようにします(ほとんど実際のコード)。
TCHAR szMenuString[256];
MENUITEMINFO mii;
mii.cbSize = sizeof(mii);
mii.fMask = MIIM_STATE | MIIM_ID | MIIM_SUBMENU | MIIM_CHECKMARKS |
MIIM_DATA | MIIM_STRING | MIIM_BITMAP | MIIM_FTYPE;
mii.dwTypeData = szMenuString;
mii.cch = sizeof(szMenuString) / sizeof(szMenuString[0]);
GetMenu()->GetMenuItemInfo(ID_SUBMENU, &mii);
mii.fMask |= MIIM_SUBMENU;
mii.hSubMenu = subMenu.GetSafeHmenu();
GetMenu()->SetMenuItemInfo(ID_SUBMENU, &mii);
サブメニューを作成して、メインメニューの他の部分と同じスタイルで表示するにはどうすればよいですか?
私のコードはMFCで書かれていますが、あなたの答えはMFCである必要はありません(そしておそらくそうではありません)。