VisualC 中自绘菜单的实现
来源:互联网
作者:西部数码
时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
return 0;
}
///////////////////////////////////////////////////////////////初始自画菜单;
void CMainFrame::OnInitMenu(CMenu* pMenu)
{
CFrameWnd::OnInitMenu(pMenu);
// TODO: Add your message handler code here
m_menu.InitMenu(pMenu,IDR_MAINFRAME,&m_wndToolBar);
}
////////////////////////////////////////////////////////////////////通知菜单自画;
void CMainFrame::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// TODO: Add your message handler code here and/or call default
if(!nIDCtl) m_menu.DrawItem(lpDrawItemStruct);
CFrameWnd::OnDrawItem(nIDCtl, lpDrawItemStruct);
}
//////////////////////////////////////////////////////////////////通知菜单确定尺寸;
void CMainFrame::OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT
lpMeasureItemStruct)
{
// TODO: Add your message handler code here and/or call default
if(!nIDCtl) m_menu.MeasureItem(lpMeasureItemStruct);
CFrameWnd::OnMeasureItem(nIDCtl, lpMeasureItemStruct);
}
/////////////////////////////////////////////////////////////////初始化上下文菜单;
CChildView::CChildView()
{
m_menu.CreatePopupMenu();
m_menu.AppendMenu(0,ID_EDIT_UNDO,"撤消");
m_menu.AppendMenu(MF_SEPARATOR,0);
m_menu.AppendMenu(0,ID_EDIT_COPY,"复制");
m_menu.AppendMenu(0,ID_EDIT_CUT,"剪切");
m_menu.AppendMenu(0,ID_EDIT_PASTE,_T("粘贴"));
}
///////////////////////////////////////////////////////////////////////////////
CChildView::~CChildView() //销毁上下文菜单;
{
m_menu.DestroyMenu();
}
///////////////////////////////////////////////////////////////////修改菜单实现自画;
void CChildView::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu)
{
CWnd ::OnInitMenuPopup(pPopupMenu, nIndex, bSysMenu);
// TODO: Add your message handler code here
if(!bSysMenu)
m_menu.InitPopupMenu(pPopupMenu,IDR_MAINFRAME,m_pToolBar);
}
/////////////////////////////////////////////////////////////显示上下文菜单;
void CChildView::OnContextMenu(CWnd* pWnd, CPoint point)
{
// TODO: Add your message handler code here
m_menu.TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);
}
四、小结
到此为止,本例详细介绍了菜单自绘类CMenuEx的实现以及它在应用程序的具体使用方法,相信读者能够从中学习到菜单的自绘制机理。本例中的CMenuEx类稍加改动,就可以实现各种不同类型的菜单效果,如WindowsXP风格的菜单等。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



