Показывать кнопку панели задач при использовании 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
стиль.