我引入了一个类,对MDI程序现有的菜单进行自绘。
如果要自绘主框架菜单,则对主框架子菜单设置自绘属性,然后重载DrawItem和MeasureItem函数。如下过程
COwerDrawMenu m_Menu;m_Menu.SetOwerDraw(设置自绘属性);
然后重载框架的DrawItem和MeasureItem函数()
CMainFrame::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
m_Menu.DrawItem(lpDrawItemStruct);
CMDIFrameWnd::OnDrawItem(nIDCtl, lpDrawItemStruct);
}void CMainFrame::OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
m_Menu.MeasureItem(lpMeasureItemStruct);
CMDIFrameWnd::OnMeasureItem(nIDCtl, lpMeasureItemStruct);
}
如果打开视图,此时系统菜单变成视图的菜单,也必须设置变量对其设置自绘属性。
这样多个视图的话,要写多个重复的代码。
有没有办法,只设置一次,不管当前菜单是哪个视图的都能进行自绘显示????????
如果要自绘主框架菜单,则对主框架子菜单设置自绘属性,然后重载DrawItem和MeasureItem函数。如下过程
COwerDrawMenu m_Menu;m_Menu.SetOwerDraw(设置自绘属性);
然后重载框架的DrawItem和MeasureItem函数()
CMainFrame::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
m_Menu.DrawItem(lpDrawItemStruct);
CMDIFrameWnd::OnDrawItem(nIDCtl, lpDrawItemStruct);
}void CMainFrame::OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
m_Menu.MeasureItem(lpMeasureItemStruct);
CMDIFrameWnd::OnMeasureItem(nIDCtl, lpMeasureItemStruct);
}
如果打开视图,此时系统菜单变成视图的菜单,也必须设置变量对其设置自绘属性。
这样多个视图的话,要写多个重复的代码。
有没有办法,只设置一次,不管当前菜单是哪个视图的都能进行自绘显示????????
解决方案 »
- 求助,初学者一个程序实在搞不懂,各位大师帮帮我
- VC++中BMP图像读取传输问题
- 如何在CTreeCtrl控件上实现,鼠标移到某一个节点上,更换本节点的图片和鼠标的光标形状??
- 如何改变文件察看的方式?vcmute(横秋)进
- 为什么我在myview类里一调用settimer函数就有运行错。
- 自绘按钮
- 求控制声卡的dll程序源代码事例,有重谢![email protected]
- 如何才能实现WORD那样从网页中直接把文字和图片复制到文档中?
- 为何在CListCtrl派生出的CTblist类中实现添加一列不成功
- 多线程下的异步操作
- *****谁有《深入解析MFC》这本书?能转让给我吗?**************
- 全局钩子问题
ON_NOTIFY_REFLECT()