2010-09-29 18 views
2

我有下面的代码:放弃ALT键在CMainFrame的

CMainFrame* pFrame = new CMainFrame; 
if (!pFrame) 
    return FALSE; 
m_pMainWnd = pFrame; 
// create and load the frame with its resources 
pFrame->LoadFrame(IDR_APP_MAINFRAME, 
    WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL, 
    NULL); 
// The one and only window has been initialized, so show and update it 
pFrame->ShowWindow(SW_SHOWMAXIMIZED); 

的问题是,当我按下<ALT>,菜单(IDR_APP_MAINFRAME)将弹出。 我该如何隐藏菜单并且不回应新闻?

我早就听说这是由于在MFC中的加速控制,但我看不出这是使用VS2008在我的项目解决方案的控制..

+0

MFC是eveil ... – wengseng 2010-09-29 08:14:11

回答

0

在你CMainFrame覆盖PreCreateWindow并摧毁菜单。尝试是这样的:

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) 
{ 
     if(cs.hMenu!=NULL) 
     { 
       ::DestroyMenu(cs.hMenu); 
       cs.hMenu = NULL; 
     } 
     return CFrameWnd::PreCreateWindow(cs); 
} 
+0

我想你的方式,但是,它崩溃时,它继续: 无效的CFrameWnd :: OnInitMenuPopup(CMenu的* pMenu,UINT参数nIndex,BOOL bSysMenu) ( hParentMenu = pParent-> GetMenu() - > GetSafeHmenu())!= NULL)// - >这里 有没有办法启动菜单,但根本不显示它? – wengseng 2010-09-30 01:11:58

+0

@wengsenf:你为什么重写'CFrameWnd :: OnInitMenuPopu'? – mmonem 2010-09-30 08:42:30

+0

我没有超过。它在代码中建立的mfc中断行。 – wengseng 2010-09-30 15:58:30