void CMainFrame::HideMenuBarAndToolBar()
{
CMenu* pMenu = GetMenu();
if(NULL == pMenu){
//
// メニューとツールバー)が非表示の場合は何もしない。
// メニューが表示されているかの判断は、GetMenu()の戻り値がNULLではない場合とする。
return;
}
pMenu->DestroyMenu();
m_hMenuDefault = NULL;
SetMenu(NULL);
CControlBar* pBar = GetControlBar(ID_VIEW_TOOLBAR);
if(pBar){
ShowControlBar(pBar, FALSE, FALSE);
}
CControlBar* pBar2 = GetControlBar(ID_VIEW_STATUS_BAR);
if(pBar2 != NULL){
ShowControlBar(pBar2, FALSE, FALSE);
}
ModifyStyle(0xFFFFFF, WS_OVERLAPPED);
}
void CMainFrame::ShowMenuBarAndToolBar()
{
CMenu* pMenu = GetMenu();
if(pMenu){
//
// メニューとツールバー)が表示の場合は何もしない。
return;
}
CMenu Menu;
Menu.LoadMenu(IDR_MAINFRAME);
m_hMenuDefault = Menu.Detach();
SetMenu(CMenu::FromHandle(m_hMenuDefault));
CControlBar* pBar = GetControlBar(ID_VIEW_TOOLBAR);
if(pBar){
ShowControlBar(pBar, TRUE, FALSE);
}
CControlBar* pBar2 = GetControlBar(ID_VIEW_STATUS_BAR);
if(pBar2 != NULL){
ShowControlBar(pBar2, TRUE, FALSE);
}
CRect rect;
GetWindowRect(rect);
ModifyStyle(0, WS_OVERLAPPEDWINDOW, TRUE);
SetWindowPos(NULL, rect.left, rect.top, rect.Width() - 1, rect.Height() - 1, SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
SetWindowPos(NULL, rect.left, rect.top, rect.Width(), rect.Height(), SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
Invalidate();
UpdateWindow();
}
お礼
回答ありがとうございます。 回答通りでちゃんとできました。 最後にフレームも無くしてクライアント領域のみにしたいのですが可能なのでしょうか?