3 * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
4 * PURPOSE: ITaskbarList implementation
5 * COPYRIGHT: Copyright 2018 Mark Jansen (mark.jansen@reactos.org)
11 /***********************************************************************
12 * ITaskbarList2 implementation
15 #define TWM_GETTASKSWITCH (WM_USER + 236)
17 CTaskbarList::CTaskbarList()
20 m_ShellHookMsg
= RegisterWindowMessageW(L
"SHELLHOOK");
23 CTaskbarList::~CTaskbarList()
27 HWND
CTaskbarList::TaskWnd()
30 if (m_hTaskWnd
&& ::IsWindow(m_hTaskWnd
))
33 hTrayWnd
= FindWindowW(L
"Shell_TrayWnd", NULL
);
36 m_hTaskWnd
= (HWND
)SendMessageW(hTrayWnd
, TWM_GETTASKSWITCH
, 0L, 0L);
41 void CTaskbarList::SendTaskWndShellHook(WPARAM wParam
, HWND hWnd
)
43 HWND hTaskWnd
= TaskWnd();
44 if (hTaskWnd
&& m_ShellHookMsg
)
45 ::SendMessageW(hTaskWnd
, m_ShellHookMsg
, wParam
, (LPARAM
)hWnd
);
49 HRESULT WINAPI
CTaskbarList::MarkFullscreenWindow(HWND hwnd
, BOOL fFullscreen
)
56 /***********************************************************************
57 * ITaskbarList implementation
60 HRESULT WINAPI
CTaskbarList::HrInit()
62 if (m_ShellHookMsg
== NULL
)
71 HRESULT WINAPI
CTaskbarList::AddTab(HWND hwnd
)
73 SendTaskWndShellHook(HSHELL_WINDOWCREATED
, hwnd
);
77 HRESULT WINAPI
CTaskbarList::DeleteTab(HWND hwnd
)
79 SendTaskWndShellHook(HSHELL_WINDOWDESTROYED
, hwnd
);
83 HRESULT WINAPI
CTaskbarList::ActivateTab(HWND hwnd
)
85 SendTaskWndShellHook(HSHELL_WINDOWACTIVATED
, hwnd
);
89 HRESULT WINAPI
CTaskbarList::SetActiveAlt(HWND hwnd
)