使用WS_EX_TOOLWINDOW时显示任务栏按钮

时间:2017-02-20 18:14:23

标签: winapi createwindowex

CreateWindowEx中使用WS_EX_TOOLWINDOW标志时,是否可以显示任务栏按钮?

1 个答案:

答案 0 :(得分:0)

无主顶层窗口需要WS_EX_APPWINDOW样式才能在任务栏上显示。

Extended Window Styles文档明确指出“工具窗口不会出现在任务栏中”。

MSDN进一步详细记录了这一点:

The Taskbar

  

当应用程序创建一个无主窗口时,Shell会在任务栏上放置一个按钮,即一个没有父窗口并且具有相应扩展样式位的窗口(参见{{3下面)。

     

...

     

管理任务栏按钮

     

只要应用程序创建了一个不属于的窗口,Shell就会在任务栏上创建一个按钮。 要确保窗口按钮位于任务栏上,请创建一个具有WS_EX_APPWINDOW扩展样式的无主窗口。要阻止窗口按钮放在任务栏上,请使用WS_EX_TOOLWINDOW扩展样式创建无主窗口。作为替代方案,您可以创建一个隐藏窗口,并使此隐藏窗口成为可见窗口的所有者。

     

只有当窗口的样式支持可见的任务栏按钮时,Shell才会从任务栏中删除窗口的按钮。如果要将窗口的样式动态更改为不支持可见任务栏按钮的样式,则必须先隐藏窗口(通过ShowWindow调用SW_HIDE),更改窗口样式,然后显示窗口。

     

...

     

修改任务栏的内容

     Shell32.dll的

Managing Taskbar Buttons添加了修改任务栏内容的功能。 从应用程序中,您现在可以添加,删除和激活任务栏按钮。激活项目不会激活窗口;它显示在任务栏上按下的项目。

     

任务栏修改功能在公共Version 4.71 and later接口(CLSID_TaskbarList)的组件对象模型(COM)对象(IID_ITaskbarList)中实现。您必须调用ITaskbarList方法来初始化对象。然后,您可以使用ITaskbarList接口的方法来修改任务栏的内容。

因此,您可以使用ITaskbarList::HrInit作为工具窗口:

  

可以将任何类型的窗口添加到任务栏,但建议窗口至少具有WS_CAPTION样式。