//菜单命令范围
/*
0X8000~0X8FFFF ClassWizard将次范围用于应用程序定义的菜单
0X9000~0XDFFFF 本范围内的命令ID可供使用
0XE000~0XFFFFF MFC将这一范围用于自身目的
*/
//获取与框架窗口相链接的菜单项
CMenu*pMenu=GetMenu();
//获取字菜单指针
CMenu*pmSub=pMenu->GetSubMenu(1);
//常见的菜单函数;
pMenu->AppendMenu();//将新菜单项添加到现有彩电末尾或者添加到新菜单中
pMenu->CheckMenuItem();//设置或者清楚菜单对号,一般可以提供一个UPDATW_COMMAND_UI来代替
pMenu->GetMenuItemID();//查询一个菜单项的命令ID
pMenu->GetMenuString();//查询菜单项的文本标签
pMenu->EnableMenuItem();//启用或者禁用菜单项(只有在CFrameWnd::m_bAutoMenuEnable=FALSE时才有效)为了替换次函数,可提供一个UPDATW_COMMAND_UI映射消息
pMenu->InsertMenu();//在现有菜单内的指定位置插入一个菜单项
pMenu->RemoveMenu();//删除一个指定的菜单项
//给动态创建菜单提供提示信息(Prompt)
//可以通过重载GetMessageString取代CFrameWnd的GetMessageString函数,对于静态创建的菜单项,可调用默认的程序,否则,调用自己的函数
动态创建菜单
void CMenuTestView::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
ClientToScreen(&point);
if (NULL==m_menu)
{
m_menu=new CMenu();
if (!m_menu)
{
return;
}
if(!m_menu->LoadMenu(IDR_MYMENU))
{
return;
}
}
CMenu*pmSub=m_menu->GetSubMenu(0);
pmSub->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,
point.x,point.y,this);
CView::OnRButtonDown(nFlags, point);