Показывать кнопку панели задач при использовании WS_EX_TOOLWINDOW

Можно ли отобразить кнопку панели задач при использовании флага WS_EX_TOOLWINDOW в CreateWindowEx?

1 ответ

Решение

WS_EX_APPWINDOW Стиль необходим для того, чтобы неиспользуемое окно верхнего уровня отображало себя на панели задач.

В документации по расширенным стилям окна особо указано, что " окно инструментов не отображается на панели задач ".

MSDN далее документирует это более подробно:

Панель задач

Оболочка помещает кнопку на панели задач всякий раз, когда приложение создает неизвестное окно, то есть окно, которое не имеет родителя и имеет соответствующие биты расширенного стиля (см. " Управление кнопками панели задач" ниже).

...

Управление кнопками панели задач

Оболочка создает кнопку на панели задач всякий раз, когда приложение создает окно, которое не принадлежит. Чтобы убедиться, что кнопка окна находится на панели задач, создайте неиспользуемое окно с WS_EX_APPWINDOW расширенный стиль. Чтобы кнопка окна не помещалась на панель задач, создайте неиспользуемое окно с WS_EX_TOOLWINDOW расширенный стиль. В качестве альтернативы вы можете создать скрытое окно и сделать это скрытое окно владельцем вашего видимого окна.

Оболочка удалит кнопку окна с панели задач, только если стиль окна поддерживает видимые кнопки панели задач. Если вы хотите динамически изменить стиль окна на стиль, который не поддерживает видимые кнопки панели задач, вы должны сначала скрыть окно (вызывая ShowWindow с SW_HIDE), измените стиль окна, а затем отобразите окно.

...

Изменение содержимого панели задач

В версии 4.71 и более поздних версиях Shell32.dll добавлена ​​возможность изменять содержимое панели задач. Из приложения теперь вы можете добавлять, удалять и активировать кнопки панели задач. Активация элемента не активирует окно; показывает элемент как нажатый на панели задач.

Возможности модификации панели задач реализованы в объекте Component Object Model (COM) (CLSID_TaskbarList) который выставляет ITaskbarList интерфейс (IID_ITaskbarList). Вы должны позвонить ITaskbarList::HrInit метод для инициализации объекта. Затем вы можете использовать методы ITaskbarList Интерфейс для изменения содержимого панели задач.

Таким образом, вы можете использовать ITaskbarList::AddTab() для окна вашего инструмента:

Окно любого типа может быть добавлено на панель задач, но рекомендуется, чтобы окно по крайней мере имело WS_CAPTION стиль.

Другие вопросы по тегам