我是在vs2005下的 vc ++ mfc的dialog创建的工程, 我的下拉菜单为
返回 菜单
开启
关闭
我在菜单“开启”的command的命令函数里写了一下代码:
CMenu* mmenu = GetMenu();
CMenu* submenu = mmenu->GetSubMenu(1);
submenu->EnableMenuItem(ID_MENU_EVENT_START, MF_BYPOSITION | MF_DISABLED| MF_GRAYED);
想实现单击“开启”菜单后,菜单“开启”变灰失效,这段代码我在vc6.0里调试没有问题,但是在vs2005里,运行后,单击“开启”就出现问题,那位大侠做过类似的请给予指点,谢谢。
cytlyy:
SHMENUBARINFO mbi;
HWND g_hwndMb;
ZeroMemory(&mbi, sizeof(SHMENUBARINFO));
mbi.cbSize = sizeof(SHMENUBARINFO);
mbi.hwndParent = m_hWnd;
mbi.nToolBarId = IDR_MENU1;
mbi.hInstRes =AfxGetInstanceHandle();
mbi.dwFlags |= SHCMBF_HMENU;
SHCreateMenuBar(&mbi);
g_hwndMb = mbi.hwndMB;
TBBUTTONINFO tbbi;
HMENU g_hMenu;
tbbi.cbSize = sizeof(tbbi);
tbbi.dwMask = TBIF_LPARAM | TBIF_BYINDEX;
::SendMessage(g_hwndMb, TB_GETBUTTONINFO,0, (LPARAM)&tbbi);
g_hMenu = (HMENU)tbbi.lParam;
::EnableMenuItem(g_hMenu,ID_FILE_OK, MF_GRAYED);
//这样是可以的。如果你的Menu不是在初始化时变灰,就将g_hMenu定义为全局变量然后在相应的地方调用::EnableMenuItem(g_hMenu,ID_FILE_OK, MF_GRAYED);