メニューを非表示にする

MicroSoftのサポート文書から引用
http://support.microsoft.com/kb/131368/ja

SDIFrameWnd


CMainFrameのPreCreateWindowメソッドをオーバーライドして、以下のコードを追加する。
if (cs.hMenu != NULL){
  ::DestroyMenu(cs.hMenu);
  cs.hMenu = NULL;
}

MDIFrameWnd


リソースから、MDIの子ウィンドウに関連付いたメニューを削除する。
(AppWizardで作成した場合、IDR_xxxTYPE)

CMainFrameのPreCreateWindowメソッドをオーバーライドして、以下のコードを追加する。
if (cs.hMenu != NULL){
  ::DestroyMenu(cs.hMenu);
  cs.hMenu = NULL;
}

LoadFrameメソッドをオーバーライドして、以下のように変更する。
BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext){
  return CFrameWnd::LoadFrame(nIDResource, dwDefaultStyle, pParentWnd, pContext);
}

OnCreateClientメソッドをオーバーライドして、以下のように変更する。
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext){
  return CreateClient(lpcs, NULL);
}



最終更新:2011年09月27日 17:43