首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

多文档菜单的自绘有关问题?十分着急

2012-04-06 
多文档菜单的自绘问题??????,十分着急。请高手看看连续问了几次了,一直也没有一个可行的答案。我想自绘程序

多文档菜单的自绘问题??????,十分着急。请高手看看
连续问了几次了,一直也没有一个可行的答案。
我想自绘程序的菜单。在自绘的之前,首先要得到当前窗口的菜单的句柄。
然后根据这个句柄,进行自绘属性设置。然后重载OnDrawItem()和OnMeasureItem()两个函数,进行自绘的具体设置。
但是我使用下面两句获得菜单句柄的时候,总是出错。(在CMainFrame类中可以)
但在视图中的OnInitUpdate()函数中使用出错:
CMenu   *pMenu=GetMenu();                         //能够得到指针
HMENU   hMenu=pMenu-> GetSafeHmenu();//得到句柄的时候出错???

我的本意是当打开一个新的文档的时候,得到当前菜单然后重载上述两个函数,利用得到的句柄设置自绘属性,但是行不通。
问题:
(1)为什么得到菜单的指针却得不到菜单得句柄。
(2)当打开一个文档后,(点击新建)。不管当前加载的时候什么文档。都能得到当前的菜单,并设置自绘属性。怎么实现???谢谢




[解决办法]
void CMainFrame::OnInitMenu(CMenu* pMenu)
{
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);
}
}
}

热点排行