FAQ:WinAPI VCPP:отключить системное меню

Материал из Весельчак У

Перейти к: навигация, поиск

Как в главном окне отключить системное меню (в левом верхнем углу) и кнопки (в правом верхнем углу)?

При создании окна нужно убрать стиль WS_SYSMENU. Теперь пользователь корректно может закрыть окно только Alt+F4, ну, или если вы предоставите ему дополнительную возможность сделать это.

Пример 1. (для SDI, MDI)

// этот обработчик уже добавлен визардом
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if (!CFrameWnd::PreCreateWindow(cs))
return FALSE;
 
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
 
///////////////////////////////
// добавленная часть
{
// убираем стиль
cs.style& = ~WS_SYSMENU;
}
///////////////////////////////
 
return TRUE;
}

Пример 2. (для диалога)

Если диалог описан в ресурсах, то в свойствах диалога убрать галочки:

  • "System menu"
  • "Minimize box"
  • "Maximize box"