在CreateWindowEx
中使用WS_EX_TOOLWINDOW标志时,是否可以显示任务栏按钮?
答案 0 :(得分:0)
无主顶层窗口需要WS_EX_APPWINDOW
样式才能在任务栏上显示。
Extended Window Styles文档明确指出“工具窗口不会出现在任务栏中”。
MSDN进一步详细记录了这一点:
当应用程序创建一个无主窗口时,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
样式。