修改菜单项的函数功能ModifyMenu()已经实现,不过那是在打开软件后,修改指定的菜单项。
现在想实现在用户看到菜单前,就修改了菜单项,应该在哪一步调用修改菜单函数。
加在框架类OnCreate或者PreCreateWindow里直接崩溃掉,提示取不到菜单GetMenu()
现在想实现在用户看到菜单前,就修改了菜单项,应该在哪一步调用修改菜单函数。
加在框架类OnCreate或者PreCreateWindow里直接崩溃掉,提示取不到菜单GetMenu()
CString strname;
menu->GetMenuString(UINT(menu->GetSubMenu(1)->m_hMenu),strname,MF_BYCOMMAND);在MainFrm的create函数最后 GetMenu可以得到菜单
BOOL CMainFrame::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle , const RECT& rect , CWnd* pParentWnd , LPCTSTR lpszMenuName , DWORD dwExStyle , CCreateContext* pContext)
{
CBHotKeySetting *pHotKeySetting = theApp.getSetting()->getHotKeySetting();
CMenu *menu = GetMenu();
//修改菜单
for(int iIndex = 0; iIndex < pHotKeySetting->getHotKeyCount(); iIndex++)
pHotKeySetting->modifyMenuHotKey(iIndex, menu);
return __super::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, lpszMenuName, dwExStyle, pContext);
}
还是会报错呢
{ ASSERT(::IsWindow(m_hWnd)); return CMenu::FromHandle(::GetMenu(m_hWnd)); }
precreatewindow是在构建窗口类的时候的事件;
onCreate是响应WM_CREATE的【createWindow没返回之前】
都没有构建菜单
void CMainFrame::OnInitMenu(CMenu* pMenu)
{
__super::OnInitMenu(pMenu); //修改菜单
。
}