Is it possible to display the taskbar button when WS_EX_TOOLWINDOW flag is used in CreateWindowEx
?
The WS_EX_APPWINDOW
style is required for an unowned top-level window to display itself on the Taskbar.
The Extended Window Styles documentation specifically states that a "tool window does not appear in the taskbar".
MSDN further documents this in more detail:
The Shell places a button on the taskbar whenever an application creates an unowned window—that is, a window that does not have a parent and that has the appropriate extended style bits (see Managing Taskbar Buttons, below).
...
Managing Taskbar Buttons
The Shell creates a button on the taskbar whenever an application creates a window that isn't owned. To ensure that the window button is placed on the taskbar, create an unowned window with the
WS_EX_APPWINDOW
extended style. To prevent the window button from being placed on the taskbar, create the unowned window with theWS_EX_TOOLWINDOW
extended style. As an alternative, you can create a hidden window and make this hidden window the owner of your visible window.The Shell will remove a window's button from the taskbar only if the window's style supports visible taskbar buttons. If you want to dynamically change a window's style to one that does not support visible taskbar buttons, you must hide the window first (by calling
ShowWindow
withSW_HIDE
), change the window style, and then show the window....
Modifying the Contents of the Taskbar
Version 4.71 and later of Shell32.dll adds the capability to modify the contents of the taskbar. From an application, you can now add, remove, and activate taskbar buttons. Activating the item does not activate the window; it shows the item as pressed on the taskbar.
The taskbar modification capabilities are implemented in a Component Object Model (COM) object (
CLSID_TaskbarList
) that exposes theITaskbarList
interface (IID_ITaskbarList
). You must call theITaskbarList::HrInit
method to initialize the object. You can then use the methods of theITaskbarList
interface to modify the contents of the taskbar.
So, you might be able to use ITaskbarList::AddTab()
for your tool window:
Any type of window can be added to the taskbar, but it is recommended that the window at least have the
WS_CAPTION
style.