Visual C++中自绘菜单的实现(10)
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);
}