修改菜单文本的代码如下:
void KLangEngine::SetMenuText(HMENU hMenu){
assert(hMenu); MENUITEMINFO mii;
memset(&mii,0,sizeof(MENUITEMINFO));
mii.cbSize =sizeof(MENUITEMINFO);
mii.fMask =MIIM_STRING;
mii.fType =MFT_STRING; int nMenuItemCnt=::GetMenuItemCount(hMenu);
int nMenuItemID=0;
HMENU hSubMenu=0;
int nError=0;
for(int i=0; i<nMenuItemCnt; i++){
nMenuItemID =::GetMenuItemID(hMenu,i);
if(mii.dwTypeData=GetString(nMenuItemID))
nError=::SetMenuItemInfo(hMenu,i,TRUE/*by pos*/,&mii); hSubMenu=::GetSubMenu(hMenu,i);
if(hSubMenu)
SetMenuText(hSubMenu);
}
}
在WM_INITDIALOG消息里面调用这个函数
m_pLang->SetMenuText(::GetMenu(m_hWnd));
::DrawMenuBar(m_hWnd);
经过跟踪发现SetMenuItemInfo调用成功了,但是菜单文本死活显示不出来,为什么呢?