龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

Visual C++中自绘菜单的实现(10)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
////////////////////////////////////////////////////////设置菜单上的纵向位图; void CMenuEx::SetImageLeft(UINT idBmpLeft) { m_bmpImageLeft.LoadBitmap(idBmpLeft);//装载纵向位图; m_bHa
////////////////////////////////////////////////////////设置菜单上的纵向位图;
void CMenuEx::SetImageLeft(UINT idBmpLeft)
{
 m_bmpImageLeft.LoadBitmap(idBmpLeft);//装载纵向位图;
 m_bHasImageLeft = TRUE;
 BITMAP bmpInfo;
 m_bmpImageLeft.GetBitmap(&bmpInfo);
 m_szImageLeft.cx =bmpInfo.bmWidth;
 m_szImageLeft.cy =bmpInfo.bmHeight;
}
////////////////////////////////////////////////////////////////设置菜单上的文本颜色;
void CMenuEx::SetTextColor(COLORREF crColor)
{
 m_colText =crColor;
}
////////////////////////////////////////////////////////////设置菜单的背景颜色;
void CMenuEx::SetBackColor(COLORREF crColor)
{
 m_colMenu =crColor;
}
//////////////////////////////////////////////////////////设置菜单高亮显示时的颜色;
void CMenuEx::SetHighLightColor(COLORREF crColor)
{
 m_colTextSelected =crColor;
}

//////////////////////////////////////////////////////初始化上下文菜单;
void CMenuEx::InitPopupMenu(CMenu *pPopupMenu,UINT uToolBar, CToolBar *pToolBar)
{
 if(m_bInitial)
  return ;
 GetImageFromToolBar(uToolBar,pToolBar);
 ChangeStyle(pPopupMenu,pToolBar);
 m_bInitial =TRUE;
}

////////////////////////////////////////////////////在程序中使用CMenuEx类对象实现菜单的自画;
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 ……………………………..
 if (!m_wndStatusBar.Create(this) ||!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
 {
  TRACE0("Failed to create status bar ");
  return -1; // fail to create
 }
 m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
 EnableDocking(CBRS_ALIGN_ANY);
 DockControlBar(&m_wndToolBar);
 m_wndView.m_pToolBar =&m_wndToolBar; // 将视图内的工具条变量附值
 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);
}

精彩图集

赞助商链接