2010-09-29 64 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