连续问了几次了,一直也没有一个可行的答案。
我想自绘程序的菜单。在自绘的之前,首先要得到当前窗口的菜单的句柄。
然后根据这个句柄,进行自绘属性设置。然后重载OnDrawItem()和OnMeasureItem()两个函数,进行自绘的具体设置。
但是我使用下面两句获得菜单句柄的时候,总是出错。(在CMainFrame类中可以)
但在视图中的OnInitUpdate()函数中使用出错:
CMenu *pMenu=GetMenu(); //能够得到指针
HMENU hMenu=pMenu->GetSafeHmenu();//得到句柄的时候出错???我的本意是当打开一个新的文档的时候,得到当前菜单然后重载上述两个函数,利用得到的句柄设置自绘属性,但是行不通。
问题:
(1)为什么得到菜单的指针却得不到菜单得句柄。
(2)当打开一个文档后,(点击新建)。不管当前加载的时候什么文档。都能得到当前的菜单,并设置自绘属性。怎么实现???谢谢
我想自绘程序的菜单。在自绘的之前,首先要得到当前窗口的菜单的句柄。
然后根据这个句柄,进行自绘属性设置。然后重载OnDrawItem()和OnMeasureItem()两个函数,进行自绘的具体设置。
但是我使用下面两句获得菜单句柄的时候,总是出错。(在CMainFrame类中可以)
但在视图中的OnInitUpdate()函数中使用出错:
CMenu *pMenu=GetMenu(); //能够得到指针
HMENU hMenu=pMenu->GetSafeHmenu();//得到句柄的时候出错???我的本意是当打开一个新的文档的时候,得到当前菜单然后重载上述两个函数,利用得到的句柄设置自绘属性,但是行不通。
问题:
(1)为什么得到菜单的指针却得不到菜单得句柄。
(2)当打开一个文档后,(点击新建)。不管当前加载的时候什么文档。都能得到当前的菜单,并设置自绘属性。怎么实现???谢谢
{
CFrameWnd::OnInitMenu(pMenu);
CMenu *pSubMenu;
UINT nCount,nSubCount,nID;
nCount=pMenu->GetMenuItemCount();//子菜单的列数
for(UINT i=0;i<nCount;i++)
{
pSubMenu =pMenu->GetSubMenu(i);
nSubCount=pSubMenu->GetMenuItemCount();//此列菜单菜单项的个数
for(UINT j=0;j<nSubCount;j++)
{
nID=pSubMenu->GetMenuItemID(j);
//将框架菜单所有菜单都添加MF_OWNERDRAW标志
pSubMenu->ModifyMenu(j,MF_BYPOSITION|MF_OWNERDRAW,nID);
}
}
}