Remove MinGW support
[blender-staging.git] / intern / ghost / intern / GHOST_TaskbarWin32.h
1 /** \file ghost/intern/GHOST_TaskbarWin32.h
2  *  \ingroup GHOST
3  */
4 #ifndef __GHOST_TASKBARWIN32_H__
5 #define __GHOST_TASKBARWIN32_H__
6
7 #ifndef WIN32
8 #error WIN32 only!
9 #endif // WIN32
10
11 /* require Windows XP or newer */
12 #undef _WIN32_WINNT
13 #define _WIN32_WINNT 0x501
14
15 #define WIN32_LEAN_AND_MEAN
16 #include <windows.h>
17 #include <shlobj.h>
18
19
20 // ITaskbarList, ITaskbarList2 and ITaskbarList3 might be missing, present here in that case.
21 // Note, ITaskbarList3 is supported only since Windows 7, though. Check for that is done in
22 // GHOST_WindowWin32
23 #ifndef __ITaskbarList_INTERFACE_DEFINED__
24 #define __ITaskbarList_INTERFACE_DEFINED__
25 extern "C" {
26         const GUID CLSID_TaskbarList = {0x56FDF344, 0xFD6D, 0x11D0, {0x95, 0x8A, 0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90}};
27         const GUID IID_ITaskbarList  = {0x56FDF342, 0xFD6D, 0x11D0, {0x95, 0x8A, 0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90}};
28 }
29
30 class ITaskbarList : public IUnknown
31 {
32 public:
33         virtual HRESULT STDMETHODCALLTYPE HrInit(void) = 0;
34         virtual HRESULT STDMETHODCALLTYPE AddTab(HWND hwnd) = 0;
35         virtual HRESULT STDMETHODCALLTYPE DeleteTab(HWND hwnd) = 0;
36         virtual HRESULT STDMETHODCALLTYPE ActivateTab(HWND hwnd) = 0;
37         virtual HRESULT STDMETHODCALLTYPE SetActiveAlt(HWND hwnd) = 0;
38 };
39 #endif  /* ITaskbarList */
40
41 #ifndef __ITaskbarList2_INTERFACE_DEFINED__
42 #define __ITaskbarList2_INTERFACE_DEFINED__
43 extern "C" {
44         const GUID IID_ITaskbarList2 = {0x602D4995, 0xB13A, 0x429b, {0xA6, 0x6E, 0x19, 0x35, 0xE4, 0x4F, 0x43, 0x17}};
45 }
46 class ITaskbarList2 : public ITaskbarList
47 {
48 public:
49         virtual HRESULT STDMETHODCALLTYPE MarkFullscreenWindow(HWND hwnd, BOOL fFullscreen) = 0;
50 };
51 #endif  /* ITaskbarList2 */
52
53 #ifndef __ITaskbarList3_INTERFACE_DEFINED__
54 #define __ITaskbarList3_INTERFACE_DEFINED__
55 typedef enum THUMBBUTTONFLAGS {
56         THBF_ENABLED = 0,
57         THBF_DISABLED = 0x1,
58         THBF_DISMISSONCLICK = 0x2,
59         THBF_NOBACKGROUND = 0x4,
60         THBF_HIDDEN = 0x8,
61         THBF_NONINTERACTIVE = 0x10,
62 }
63 THUMBBUTTONFLAGS;
64
65 typedef enum THUMBBUTTONMASK {
66         THB_BITMAP = 0x1,
67         THB_ICON = 0x2,
68         THB_TOOLTIP = 0x4,
69         THB_FLAGS = 0x8,
70 }
71 THUMBBUTTONMASK;
72
73 typedef struct THUMBBUTTON {
74         THUMBBUTTONMASK dwMask;
75         UINT iId;
76         UINT iBitmap;
77         HICON hIcon;
78         WCHAR szTip[260];
79         THUMBBUTTONFLAGS dwFlags;
80 } THUMBBUTTON;
81
82 typedef enum TBPFLAG {
83         TBPF_NOPROGRESS = 0,
84         TBPF_INDETERMINATE = 0x1,
85         TBPF_NORMAL = 0x2,
86         TBPF_ERROR = 0x4,
87         TBPF_PAUSED = 0x8,
88 } TBPFLAG;
89
90 #define THBN_CLICKED  0x1800    
91
92 extern "C" {
93         const GUID IID_ITaskList3 = {0xEA1AFB91, 0x9E28, 0x4B86, {0x90, 0xE9, 0x9E, 0x9F, 0x8A, 0x5E, 0xEF, 0xAF}};
94 }
95
96 class ITaskbarList3 : public ITaskbarList2
97 {
98 public:
99         virtual HRESULT STDMETHODCALLTYPE SetProgressValue(HWND hwnd, ULONGLONG ullCompleted, ULONGLONG ullTotal) = 0;
100         virtual HRESULT STDMETHODCALLTYPE SetProgressState(HWND hwnd, TBPFLAG tbpFlags) = 0;
101         virtual HRESULT STDMETHODCALLTYPE RegisterTab(HWND hwndTab, HWND hwndMDI) = 0;
102         virtual HRESULT STDMETHODCALLTYPE UnregisterTab(HWND hwndTab) = 0;
103         virtual HRESULT STDMETHODCALLTYPE SetTabOrder(HWND hwndTab,  HWND hwndInsertBefore) = 0;
104         virtual HRESULT STDMETHODCALLTYPE SetTabActive(HWND hwndTab,  HWND hwndMDI, DWORD dwReserved) = 0;
105         virtual HRESULT STDMETHODCALLTYPE ThumbBarAddButtons(HWND hwnd, UINT cButtons, THUMBBUTTON *pButton) = 0;
106         virtual HRESULT STDMETHODCALLTYPE ThumbBarUpdateButtons(HWND hwnd, UINT cButtons, THUMBBUTTON *pButton) = 0;
107         virtual HRESULT STDMETHODCALLTYPE ThumbBarSetImageList(HWND hwnd, HIMAGELIST himl) = 0;
108         virtual HRESULT STDMETHODCALLTYPE SetOverlayIcon(HWND hwnd, HICON hIcon, LPCWSTR pszDescription) = 0;
109         virtual HRESULT STDMETHODCALLTYPE SetThumbnailTooltip(HWND hwnd, LPCWSTR pszTip) = 0;
110         virtual HRESULT STDMETHODCALLTYPE SetThumbnailClip(HWND hwnd, RECT *prcClip) = 0;
111 };
112 #endif  /* ITaskbarList3 */
113
114 #endif /*__GHOST_TASKBARWIN32_H__*/