Удаление иконки и системного меню из панели заголовков - PullRequest
2 голосов
/ 26 января 2012

Мне нужно удалить системное меню и значок из строки заголовка моего диалогового окна MFC, удерживая при этом кнопки «Развернуть», «Свернуть» и «Закрыть».

Я пытался использовать SetIcon (NULL, TRUE), SetIcon (NULL, FALSE), надеясь, что это удалит значок. Однако это не сработало. Значок все еще отображается, хотя и немного грязный, я думаю, что приложение просто взяло значок основного фрейма и изменило его размер.

Может кто-нибудь помочь мне с этим .. Я использую VC ++ 2010 SP1

Спасибо

Ответы [ 2 ]

6 голосов
/ 18 февраля 2016

Значок заголовка также можно удалить независимо с кнопок min / max / exit с помощью расширенных стилей (проверено только в диалогах, не знаю, как оно ведет себя в окнах).

Вставьте следующий код в метод OnInitDialog() вашего диалога, и он должен работать:

// Disable default titlebar icon 
int extendedStyle = GetWindowLong(m_hWnd, GWL_EXSTYLE);
SetWindowLong(m_hWnd, GWL_EXSTYLE, extendedStyle | WS_EX_DLGMODALFRAME);

// Update non-client area of the dialog, for the changes to take effect
SetWindowPos(NULL, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER);

Я также безуспешно попробовал метод SetIcon() и многие другие предложенные решения / хаки, и кроме верхнего (то есть расширенного стиля) ни один не работал.

EDIT:

Я только что наткнулся на гораздо более простой эквивалент верхнего кода:

Просто добавьте DS_MODALFRAME к стилям диалогового окна вместе с WS_CAPTION и WS_SYSMENU.

https://msdn.microsoft.com/en-us/library/windows/desktop/ff729172%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396

1 голос
/ 26 января 2012

В редакторе ресурсов отредактируйте свойства вашего диалога: установите «Системное меню» на false. Это удалит WS_SYSMENU стиль окна вашего диалога.

РЕДАКТИРОВАТЬ: Ой! Я просто перечитал ваш вопрос и понял, что вы хотите оставить минимальные и максимальные значения. Мое решение не сделает этого. Это необычное требование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...