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

Материал из Весельчак У
Версия от 15:36, 3 октября 2009; RXL (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

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

При создании окна нужно убрать стиль 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"