MFC 单文档标题栏菜单按钮重绘
来源:互联网 发布:java设计模式pdf 编辑:程序博客网 时间:2024/04/27 19:13
因为框架窗口是菜单的所有者,它接收自制菜单项产生的消息WM_MEASUREITEM和WM_DRAWITEM。
1、在MainFrame中实现 OnMeasureItem和OnDrawItem函数
void CMainFrame::OnMeasureItem( int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct ){// TODO: 在此添加消息处理程序代码和/或调用默认值lpMeasureItemStruct->itemWidth = ::GetSystemMetrics( SM_CYMENU ) * 4;lpMeasureItemStruct->itemHeight = ::GetSystemMetrics( SM_CYMENU );CFrameWnd::OnMeasureItem( nIDCtl, lpMeasureItemStruct );}
void CMainFrame::OnDrawItem( int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct ){// TODO: 在此添加消息处理程序代码和/或调用默认值BITMAP bm;CBitmap bitmap;bitmap.LoadOEMBitmap( OBM_CHECK );bitmap.GetObject( sizeof( bm ), &bm );CDC dc;dc.Attach( lpDrawItemStruct->hDC );CBrush* pBrush = new CBrush( ::GetSysColor( ( lpDrawItemStruct->itemState &ODS_SELECTED ) ? COLOR_HIGHLIGHT : COLOR_MENU ) );dc.FrameRect( &( lpDrawItemStruct->rcItem ), pBrush );delete pBrush;if ( lpDrawItemStruct->itemState & ODS_CHECKED ) {CDC dcMem;dcMem.CreateCompatibleDC( &dc );CBitmap* pOldBitmap = dcMem.SelectObject( &bitmap );dc.BitBlt( lpDrawItemStruct->rcItem.left + 4, lpDrawItemStruct->rcItem.top +( ( ( lpDrawItemStruct->rcItem.bottom - lpDrawItemStruct->rcItem.top ) -bm.bmHeight ) / 2 ), bm.bmWidth, bm.bmHeight, &dcMem,0, 0, SRCCOPY );dcMem.SelectObject( pOldBitmap );}UINT itemID = lpDrawItemStruct->itemID & 0xFFFF; // Fix for Win95/98 bugpBrush = new CBrush( m_wndView.m_clrColors[itemID - ID_COLOR_RED] );CRect rect = lpDrawItemStruct->rcItem;rect.DeflateRect( 6, 4 );rect.left += bm.bmWidth;dc.FillRect( rect, pBrush );delete pBrush;dc.Detach();CFrameWnd::OnDrawItem( nIDCtl, lpDrawItemStruct );}
2、在CXXXApp实现标题栏菜单的重绘
</pre><pre name="code" class="cpp">CXXXApp::InitInstance(){...<span style="white-space:pre"></span>// 唯一的一个窗口已初始化,因此显示它并对其进行更新pFrame->ShowWindow(SW_SHOW);pFrame->UpdateWindow();//// Convert the items in the Color menu to owner-draw.//CMenu* pMenu = pFrame->GetMenu();ASSERT( pMenu != NULL );for ( int i = 0; i < 5; i++ )pMenu->ModifyMenu( ID_COLOR_RED + i, MF_OWNERDRAW,ID_COLOR_RED + i );return TRUE;}
0 0
- MFC 单文档标题栏菜单按钮重绘
- 修改MFC单文档 标题栏
- mfc标题栏重绘
- MFC 单文档去掉标题栏和菜单栏
- 终结mfc标题栏重绘
- 终结mfc标题栏重绘
- 关于WM中MFC单文档界面“新建”菜单和关闭按钮的处理
- MFC 单文档中添加按钮控件
- MFC 单文档中添加按钮控件
- MFC 单文档中添加按钮控件
- MFC单文档窗口添加按钮控件
- [Windows]MFC单文档实现菜单切换
- VS2013 MFC单文档添加菜单
- MFC单文档中修改窗口标题和标题栏图标
- MFC单文档中修改窗口标题和标题栏图标
- MFC单文档中修改窗口标题和标题栏图标
- MFC单文档中修改窗口标题和标题栏图标
- MFC 绘制标题栏 按钮
- 通过登录触发器跟踪会话产生trace文件
- getUserMedia/WebRTC助力跨浏览器摄像头捕获影像
- 反射(二)反射工厂
- Aircrack-ng——Tutorial
- Hashcat——Cracking WPA2 WPA with Hashcat in Kali Linux
- MFC 单文档标题栏菜单按钮重绘
- bzoj3594&&方伯伯的玉米田
- Airodump-ng——Description
- RxVolley-初认识
- 深入浅出 Cocoa 之 Core Data
- MongoDB 性能瓶颈分析
- myeclipse tomcat 部署项目不能点击finish
- kali 2.0 — WIFI——commands
- 猿题库 iOS 客户端架构设计