右键弹出菜单的自动更新

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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值