右键弹出菜单的自动更新
2013-11-22 14:07
218 查看
ON_COMMAND_RANGE(ID_SHAPE_CIRCLE,ID_SHAPE_TRIANGLE,OnShape)
ON_UPDATE_COMMAND_UI_RANGE(ID_SHAPE_CIRCLE,ID_SHAPE_TRIANGLE,OnUpdateZoom)
void CMyShapeView::OnRButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CMenu rMenu;
rMenu.LoadMenu(IDR_MYMENU);
CMenu* submenu;
submenu=rMenu.GetSubMenu(1);
ClientToScreen(&point);
::TrackPopupMenu(submenu->GetSafeHmenu(), TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_VERTICAL,
point.x,point.y, 0, m_hWnd, NULL);
CView::OnRButtonUp(nFlags, point);
}
void CMyShapeView::OnUpdateZoom( CCmdUI* pCmdUI )
{
if (pCmdUI->m_nID == nShape - 2 + ID_SHAPE_CIRCLE)
{
pCmdUI->SetCheck();
}
else
{
pCmdUI->SetCheck(0);
}
}
void CMyShapeView::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu)
{
CView::OnInitMenuPopup(pPopupMenu, nIndex, bSysMenu);
int nCount = pPopupMenu->GetMenuItemCount();
CCmdUI cmd;//创建自动更新类
cmd.m_pMenu = pPopupMenu;
cmd.m_nIndexMax = nCount;//MSDN上未介绍的成员变量
for (int i = 0; i < nCount; i ++)
{
UINT nID = pPopupMenu->GetMenuItemID(i);
if (nID != 0)//如果不是分隔符
{
cmd.m_nIndex = i;
cmd.m_nID = nID;
cmd.DoUpdate(this, TRUE);//MSDN上未介绍的成员函数,可以找到自动更新宏,传入CCmdUI指针,来执行自动更新
}
}
// TODO: 在此处添加消息处理程序代码
}
//绘制三角形 并填充
case 4:
CPoint poly[6];
poly[0] = CPoint(200,260);
poly[1] = CPoint(260,260);
poly[2] = CPoint(230,230);
pDC->MoveTo(200,260);
pDC->LineTo(260,260);
pDC->LineTo(230,230);
pDC->LineTo(200,260);
pDC->Polygon(poly,3);
break;
ON_UPDATE_COMMAND_UI_RANGE(ID_SHAPE_CIRCLE,ID_SHAPE_TRIANGLE,OnUpdateZoom)
void CMyShapeView::OnRButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CMenu rMenu;
rMenu.LoadMenu(IDR_MYMENU);
CMenu* submenu;
submenu=rMenu.GetSubMenu(1);
ClientToScreen(&point);
::TrackPopupMenu(submenu->GetSafeHmenu(), TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_VERTICAL,
point.x,point.y, 0, m_hWnd, NULL);
CView::OnRButtonUp(nFlags, point);
}
void CMyShapeView::OnUpdateZoom( CCmdUI* pCmdUI )
{
if (pCmdUI->m_nID == nShape - 2 + ID_SHAPE_CIRCLE)
{
pCmdUI->SetCheck();
}
else
{
pCmdUI->SetCheck(0);
}
}
void CMyShapeView::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu)
{
CView::OnInitMenuPopup(pPopupMenu, nIndex, bSysMenu);
int nCount = pPopupMenu->GetMenuItemCount();
CCmdUI cmd;//创建自动更新类
cmd.m_pMenu = pPopupMenu;
cmd.m_nIndexMax = nCount;//MSDN上未介绍的成员变量
for (int i = 0; i < nCount; i ++)
{
UINT nID = pPopupMenu->GetMenuItemID(i);
if (nID != 0)//如果不是分隔符
{
cmd.m_nIndex = i;
cmd.m_nID = nID;
cmd.DoUpdate(this, TRUE);//MSDN上未介绍的成员函数,可以找到自动更新宏,传入CCmdUI指针,来执行自动更新
}
}
// TODO: 在此处添加消息处理程序代码
}
//绘制三角形 并填充
case 4:
CPoint poly[6];
poly[0] = CPoint(200,260);
poly[1] = CPoint(260,260);
poly[2] = CPoint(230,230);
pDC->MoveTo(200,260);
pDC->LineTo(260,260);
pDC->LineTo(230,230);
pDC->LineTo(200,260);
pDC->Polygon(poly,3);
break;
相关文章推荐
- 重写clistctl中右键弹出菜单
- win32 右键弹出菜单
- MFC右键弹出菜单的创建
- (整理)Sublime Text 3 安装、破解、安装Package Control、汉化、添加到右键菜单、代码格式化、禁止更新
- MFC---鼠标右键弹出菜单
- 在word弹出的右键菜单中加上自定义的菜单项
- win32进阶之路:程序托盘图标+右键弹出菜单
- C# Tips: 1.右键单击dataGrivdView选中该行并弹出菜单
- WTL::右键弹出菜单和托盘图标
- Qt5:创建右键弹出菜单
- delphi TDbGrid 右键 PopupMenu 菜单只在有数据的地方弹出
- 如何实现只有右击listview的某一项时才弹出右键菜单
- WPf 带滚动条WrapPanel 自动换行 和控件右键菜单
- CSS+JS实现点击文字弹出定时自动关闭的DIV层菜单
- 自动弹出div菜单
- FLEX里鼠标右键弹出菜单,
- 在WPF中弹出右键菜单时判断鼠标是否选中该项
- SQL Server 2008 R2中,变表的右键弹出菜单中的“选择前1000行”为“选择所有行”
- 更新Svn客户端后,右键菜单中没有TortoiseSVN
- 清除IE浏览器鼠标右键弹出菜单中的多余项