谁能详细解释一下CMenu::ModifyMenu函数 ?
我在自绘制菜单时需要修改菜单,
void CMenuEx::InitMenuItems(bool bFirst)
{
int iMaxItems = GetMenuItemCount();
for(int i = 0; i < iMaxItems; i++)
{
CString strMenu;
GetMenuString(i, strMenu, MF_BYPOSITION); //得到菜单项标题
MenuItem* pItem = new MenuItem;
pItem->iIndex = i;
pItem->hIcon = NULL;
pItem->bFirstMenu = bFirst;
strcpy(pItem->strCaption,strMenu);
ModifyMenu(GetMenuItemID(i), MF_BYCOMMAND | MF_OWNERDRAW ,GetMenuItemID(i), (char*)pItem);
if(GetSubMenu(i))
{
CMenuEx* pSubMenu = new CMenuEx;
pSubMenu->Attach(GetSubMenu(i)->GetSafeHmenu());
pSubMenu->InitMenuItems();//false
}
}
}
是弹出菜单就显示有问题,其余是好的.
void CMenuEx::InitMenuItems(bool bFirst)
{
int iMaxItems = GetMenuItemCount();
for(int i = 0; i < iMaxItems; i++)
{
CString strMenu;
GetMenuString(i, strMenu, MF_BYPOSITION); //得到菜单项标题
MenuItem* pItem = new MenuItem;
pItem->iIndex = i;
pItem->hIcon = NULL;
pItem->bFirstMenu = bFirst;
strcpy(pItem->strCaption,strMenu);
ModifyMenu(GetMenuItemID(i), MF_BYCOMMAND | MF_OWNERDRAW ,GetMenuItemID(i), (char*)pItem);
if(GetSubMenu(i))
{
CMenuEx* pSubMenu = new CMenuEx;
pSubMenu->Attach(GetSubMenu(i)->GetSafeHmenu());
pSubMenu->InitMenuItems();//false
}
}
}
是弹出菜单就显示有问题,其余是好的.
...全文
相关推荐
cmenu 先关
【知识点3】:添加菜单项CMenu对象提供了AppendMenu、InsertMenu和ModifyMenu方法来添加、插入和修改菜单项。
MFC下拉菜单打钩图标存取实例
例如,可以使用ModifyMenu方法来改变某个菜单项的状态:```cppmenu.ModifyMenu(ID_MY_MENU_ITEM, MF_BYCOMMAND | (isChecked ?
VC使用基于对话框的MFC程序实现菜单加载
,可以使用CMenu的AppendMenu()、InsertMenu()或ModifyMenu()函数动态修改菜单。
EDA/PLD中的用MFC的消息映像实现动态菜单
传统的实现方式是通过获取菜单对象并调用CMenu类的各种方法,如AppendMenu、InsertMenu、ModifyMenu和RemoveMenu等。
vc 动态菜单加载.rar
更新菜单: 当程序状态改变时,可能需要禁用或启用某些菜单项,或者更改它们的文本。这可以通过调用CMenu的EnableMenuItem()和ModifyMenu()函数完成。


