您的位置:首页 > 其它

右键弹出菜单的自动更新

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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: