1/*
2 * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.  Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26#ifndef AWT_TASKBAR_H
27#define AWT_TASKBAR_H
28
29#include <windows.h>
30#include <shlobj.h>
31
32
33#ifndef __ITaskbarList_INTERFACE_DEFINED__
34#define __ITaskbarList_INTERFACE_DEFINED__
35extern "C" {
36    const GUID CLSID_TaskbarList = {0x56FDF344, 0xFD6D, 0x11D0,
37        {0x95, 0x8A, 0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90}};
38    const GUID IID_ITaskbarList = {0x56FDF342, 0xFD6D, 0x11D0,
39        {0x95, 0x8A, 0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90}};
40}
41
42class ITaskbarList : public IUnknown {
43public:
44    virtual HRESULT STDMETHODCALLTYPE HrInit(void) = 0;
45    virtual HRESULT STDMETHODCALLTYPE AddTab(HWND hwnd) = 0;
46    virtual HRESULT STDMETHODCALLTYPE DeleteTab(HWND hwnd) = 0;
47    virtual HRESULT STDMETHODCALLTYPE ActivateTab(HWND hwnd) = 0;
48    virtual HRESULT STDMETHODCALLTYPE SetActiveAlt(HWND hwnd) = 0;
49};
50#endif  /* ITaskbarList */
51
52#ifndef __ITaskbarList2_INTERFACE_DEFINED__
53#define __ITaskbarList2_INTERFACE_DEFINED__
54
55class ITaskbarList2 : public ITaskbarList {
56public:
57    virtual HRESULT STDMETHODCALLTYPE MarkFullscreenWindow(HWND hwnd, BOOL fFullscreen) = 0;
58};
59#endif  /* ITaskbarList2 */
60
61#ifndef __ITaskbarList3_INTERFACE_DEFINED__
62#define __ITaskbarList3_INTERFACE_DEFINED__
63
64typedef enum THUMBBUTTONFLAGS {
65    THBF_ENABLED = 0, THBF_DISABLED = 0x1, THBF_DISMISSONCLICK = 0x2, THBF_NOBACKGROUND = 0x4, THBF_HIDDEN = 0x8, THBF_NONINTERACTIVE = 0x10
66} THUMBBUTTONFLAGS;
67
68typedef enum THUMBBUTTONMASK {
69    THB_BITMAP = 0x1, THB_ICON = 0x2, THB_TOOLTIP = 0x4, THB_FLAGS = 0x8
70} THUMBBUTTONMASK;
71
72typedef struct THUMBBUTTON {
73    THUMBBUTTONMASK dwMask;
74    UINT iId;
75    UINT iBitmap;
76    HICON hIcon;
77    WCHAR szTip[260];
78    THUMBBUTTONFLAGS dwFlags;
79} THUMBBUTTON;
80
81typedef enum TBPFLAG {
82    TBPF_NOPROGRESS = 0, TBPF_INDETERMINATE = 0x1, TBPF_NORMAL = 0x2, TBPF_ERROR = 0x4, TBPF_PAUSED = 0x8
83} TBPFLAG;
84#define THBN_CLICKED  0x1800
85
86class ITaskbarList3 : public ITaskbarList2 {
87public:
88    virtual HRESULT STDMETHODCALLTYPE SetProgressValue(HWND hwnd, ULONGLONG ullCompleted, ULONGLONG ullTotal) = 0;
89    virtual HRESULT STDMETHODCALLTYPE SetProgressState(HWND hwnd, TBPFLAG tbpFlags) = 0;
90    virtual HRESULT STDMETHODCALLTYPE RegisterTab(HWND hwndTab, HWND hwndMDI) = 0;
91    virtual HRESULT STDMETHODCALLTYPE UnregisterTab(HWND hwndTab) = 0;
92    virtual HRESULT STDMETHODCALLTYPE SetTabOrder(HWND hwndTab, HWND hwndInsertBefore) = 0;
93    virtual HRESULT STDMETHODCALLTYPE SetTabActive(HWND hwndTab, HWND hwndMDI, DWORD dwReserved) = 0;
94    virtual HRESULT STDMETHODCALLTYPE ThumbBarAddButtons(HWND hwnd, UINT cButtons, THUMBBUTTON * pButton) = 0;
95    virtual HRESULT STDMETHODCALLTYPE ThumbBarUpdateButtons(HWND hwnd, UINT cButtons, THUMBBUTTON * pButton) = 0;
96    virtual HRESULT STDMETHODCALLTYPE ThumbBarSetImageList(HWND hwnd, HIMAGELIST himl) = 0;
97    virtual HRESULT STDMETHODCALLTYPE SetOverlayIcon(HWND hwnd, HICON hIcon, LPCWSTR pszDescription) = 0;
98    virtual HRESULT STDMETHODCALLTYPE SetThumbnailTooltip(HWND hwnd, LPCWSTR pszTip) = 0;
99    virtual HRESULT STDMETHODCALLTYPE SetThumbnailClip(HWND hwnd, RECT *prcClip) = 0;
100};
101#endif  /* ITaskbarList3 */
102
103
104ITaskbarList3 * m_Taskbar;
105
106
107#endif /* AWT_TASKBAR_H */
108
109