是否可以在 CreateWindowEx
中使用ws_ex_toolwindow flag时显示任务栏按钮?
WS_EX_APPWINDOW
样式对于未拥有的顶级窗口需要在任务栏上显示自身。
扩展窗口样式文档专门指出" 工具窗口"中未出现在任务栏中。>
MSDN进一步记录了这一点:
任务栏
shell只要应用程序创建一个不拥有的窗口,就可以在任务栏上放置一个按钮 - 也就是说,一个没有父母的窗口,并且具有适当的扩展样式位(请参阅管理任务栏按钮,下面)。
...
管理任务栏按钮
每当应用程序创建一个不拥有的窗口时,Shell就会在任务栏上创建一个按钮。要确保将窗口按钮放置在任务栏上,请使用
WS_EX_APPWINDOW
扩展样式创建一个未拥有的窗口。为防止将窗口按钮放在任务栏上,请使用WS_EX_TOOLWINDOW
扩展样式创建未拥有的窗口。作为替代方案,您可以创建一个隐藏的窗口,并使此隐藏的窗口成为可见窗口的所有者。仅当窗口的样式支持可见的任务栏按钮时,外壳才会从任务栏中删除窗口的按钮。如果要动态地将窗口的样式更改为不支持可见任务栏按钮的窗口样式,则必须先隐藏窗口(通过使用
。SW_HIDE
调用ShowWindow
),更改窗口样式,然后显示窗口。...
修改任务栏的内容
shell32.dll版本4.71和更高版本,添加了修改任务栏内容的功能。从应用程序中,您可以添加,删除并激活任务栏按钮。激活该项目不会激活窗口;它显示了按任务栏上按下的项目。
在公开
ITaskbarList
接口(IID_ITaskbarList
)的组件对象模型(CLSID_TaskbarList
)中实现了任务栏修改功能。您必须调用ITaskbarList::HrInit
方法以初始化对象。然后,您可以使用ITaskbarList
接口的方法来修改任务栏的内容。
因此,您可以将ITaskbarList::AddTab()
用于工具窗口:
可以将任何类型的窗口添加到taskbar 中,但是建议窗口至少具有
WS_CAPTION
样式。