]> git.sesse.net Git - vlc/blob - include/vlc_windows_interfaces.h
mingw: undef small
[vlc] / include / vlc_windows_interfaces.h
1 /*****************************************************************************
2  * vlc_windows_interfaces.h : Replacement for incomplete MinGW headers
3  ****************************************************************************
4  *
5  * Copyright (C) 2009-2010 VideoLAN
6  *
7  * Authors: Geoffroy Couprie <geal@videolan.org>
8  *
9  * This program is free software; you can redistribute it and/or modify it
10  * under the terms of the GNU Lesser General Public License as published by
11  * the Free Software Foundation; either version 2.1 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU Lesser General Public License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public License
20  * along with this program; if not, write to the Free Software Foundation,
21  * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
22  *****************************************************************************/
23
24 #ifndef MINGW_WORKAROUNDS_H
25 #define MINGW_WORKAROUNDS_H
26
27 #ifdef __MINGW32__
28 # include <_mingw.h>
29 #endif
30
31 #ifdef __MINGW64_VERSION_MAJOR /* mingw.org lacks this header */
32 # include <shobjidl.h>
33 #endif
34
35 #include <commctrl.h>
36 #include <basetyps.h>
37 #include <objbase.h>
38
39 /* rpcndr.h defines small not only for idl */
40 #undef small
41
42 /* mingw.org fails to define this */
43 #ifndef __ITaskbarList3_INTERFACE_DEFINED__
44 #define __ITaskbarList3_INTERFACE_DEFINED__
45 const GUID CLSID_TaskbarList ={ 0x56FDF344,0xFD6D,0x11d0,{0x95,0x8A,0x00,0x60,0x97,0xC9,0xA0,0x90}};
46 const GUID IID_ITaskbarList3 = { 0xea1afb91,0x9e28,0x4b86,{0x90,0xe9,0x9e,0x9f,0x8a,0x5e,0xef,0xaf}};
47
48
49 typedef enum TBPFLAG
50 {
51     TBPF_NOPROGRESS    = 0,
52     TBPF_INDETERMINATE = 0x1,
53     TBPF_NORMAL        = 0x2,
54     TBPF_ERROR         = 0x4,
55     TBPF_PAUSED        = 0x8
56 } TBPFLAG;
57
58 typedef struct tagTHUMBBUTTON
59 {
60     DWORD dwMask;
61     UINT iId;
62     UINT iBitmap;
63     HICON hIcon;
64     //    WCHAR pszTip[ 260 ];
65     wchar_t pszTip[ 260 ];
66     DWORD dwFlags;
67 } THUMBBUTTON;
68
69 typedef struct tagTHUMBBUTTON *LPTHUMBBUTTON;
70
71 typedef enum THUMBBUTTONMASK {
72     THB_BITMAP  = 0x1,
73     THB_ICON    = 0x2,
74     THB_TOOLTIP = 0x4,
75     THB_FLAGS   = 0x8
76 } THUMBBUTTONMASK;
77
78 typedef enum THUMBBUTTONFLAGS {
79     THBF_ENABLED        = 0x0,
80     THBF_DISABLED       = 0x1,
81     THBF_DISMISSONCLICK = 0x2,
82     THBF_NOBACKGROUND   = 0x4,
83     THBF_HIDDEN         = 0x8,
84     THBF_NONINTERACTIVE = 0x10
85 } THUMBBUTTONFLAGS;
86
87 #ifndef THBN_CLICKED
88 # define THBN_CLICKED        0x1800
89 #endif
90
91 #ifdef __cplusplus
92 interface ITaskbarList : public IUnknown {
93 public:
94     virtual HRESULT WINAPI HrInit(void) = 0;
95     virtual HRESULT WINAPI AddTab(HWND hwnd) = 0;
96     virtual HRESULT WINAPI DeleteTab(HWND hwnd) = 0;
97     virtual HRESULT WINAPI ActivateTab(HWND hwnd) = 0;
98     virtual HRESULT WINAPI SetActiveAlt(HWND hwnd) = 0;
99 };
100
101 interface ITaskbarList2 : public ITaskbarList {
102 public:
103     virtual HRESULT WINAPI MarkFullscreenWindow(HWND hwnd,WINBOOL fFullscreen) = 0;
104 };
105
106 interface ITaskbarList3 : public ITaskbarList2
107 {
108     virtual HRESULT STDMETHODCALLTYPE SetProgressValue(
109         HWND hwnd,
110         ULONGLONG ullCompleted,
111         ULONGLONG ullTotal) = 0;
112
113     virtual HRESULT STDMETHODCALLTYPE SetProgressState(
114         HWND hwnd,
115         TBPFLAG tbpFlags) = 0;
116
117     virtual HRESULT STDMETHODCALLTYPE RegisterTab(
118         HWND hwndTab,
119         HWND hwndMDI) = 0;
120
121     virtual HRESULT STDMETHODCALLTYPE UnregisterTab(
122         HWND hwndTab) = 0;
123
124     virtual HRESULT STDMETHODCALLTYPE SetTabOrder(
125         HWND hwndTab,
126         HWND hwndInsertBefore) = 0;
127
128     virtual HRESULT STDMETHODCALLTYPE SetTabActive(
129         HWND hwndTab,
130         HWND hwndMDI,
131         DWORD dwReserved) = 0;
132
133     virtual HRESULT STDMETHODCALLTYPE ThumbBarAddButtons(
134         HWND hwnd,
135         UINT cButtons,
136         LPTHUMBBUTTON pButton) = 0;
137
138     virtual HRESULT STDMETHODCALLTYPE ThumbBarUpdateButtons(
139         HWND hwnd,
140         UINT cButtons,
141         LPTHUMBBUTTON pButton) = 0;
142
143     virtual HRESULT STDMETHODCALLTYPE ThumbBarSetImageList(
144         HWND hwnd,
145         HIMAGELIST himl) = 0;
146
147     virtual HRESULT STDMETHODCALLTYPE SetOverlayIcon(
148         HWND hwnd,
149         HICON hIcon,
150         LPCWSTR pszDescription) = 0;
151
152     virtual HRESULT STDMETHODCALLTYPE SetThumbnailTooltip(
153         HWND hwnd,
154         LPCWSTR pszTip) = 0;
155
156     virtual HRESULT STDMETHODCALLTYPE SetThumbnailClip(
157         HWND hwnd,
158         RECT *prcClip) = 0;
159
160 };
161
162 #else /* !__cplusplus */
163
164 struct ITaskbarList3Vtbl;
165 struct ITaskbarList3 { struct ITaskbarList3Vtbl* lpVtbl; };
166 typedef struct ITaskbarList3 ITaskbarList3;
167
168 struct ITaskbarList3Vtbl
169 {
170
171     long ( WINAPI *QueryInterface )(ITaskbarList3 * This, REFIID riid, void **ppvObject);
172
173     long ( WINAPI *AddRef )(ITaskbarList3 *This);
174
175     long ( WINAPI *Release )(ITaskbarList3 *This);
176
177     long ( WINAPI *HrInit )(ITaskbarList3 *This);
178
179     long ( WINAPI *AddTab )(ITaskbarList3 *This, HWND hwnd);
180
181     long ( WINAPI *DeleteTab )(ITaskbarList3 *This, HWND hwnd);
182
183     long ( WINAPI *ActivateTab )(ITaskbarList3 *This, HWND hwnd);
184
185     long ( WINAPI *SetActiveAlt )(ITaskbarList3 *This, HWND hwnd);
186
187     long ( WINAPI *MarkFullscreenWindow )(ITaskbarList3 *This, HWND hwnd,
188         BOOL fFullscreen);
189
190     long ( WINAPI *SetProgressValue )(ITaskbarList3 *This, HWND hwnd,
191         ULONGLONG ullCompleted, ULONGLONG ullTotal);
192
193     long ( WINAPI *SetProgressState )(ITaskbarList3 *This, HWND hwnd,
194         TBPFLAG tbpFlags);
195
196     long ( WINAPI *RegisterTab )( ITaskbarList3 *This, HWND hwndTab, HWND hwndMDI);
197
198     long ( WINAPI *UnregisterTab )(ITaskbarList3 *This, HWND hwndTab);
199
200     long ( WINAPI *SetTabOrder )(ITaskbarList3 *This, HWND hwndTab,
201         HWND hwndInsertBefore);
202
203     long ( WINAPI *SetTabActive )(ITaskbarList3 *This, HWND hwndTab,
204         HWND hwndMDI, DWORD dwReserved);
205
206     long ( WINAPI *ThumbBarAddButtons )(ITaskbarList3 *This, HWND hwnd,
207         UINT cButtons, LPTHUMBBUTTON pButton);
208
209     long ( WINAPI *ThumbBarUpdateButtons )(ITaskbarList3 *This, HWND hwnd,
210         UINT cButtons, LPTHUMBBUTTON pButton);
211
212     long ( WINAPI *ThumbBarSetImageList )(ITaskbarList3 *This, HWND hwnd,
213         HIMAGELIST himl);
214
215     long ( WINAPI *SetOverlayIcon )(ITaskbarList3 *This, HWND hwnd,
216         HICON hIcon, LPCWSTR pszDescription);
217
218     long ( WINAPI *SetThumbnailTooltip )(ITaskbarList3 *This, HWND hwnd,
219         LPCWSTR pszTip);
220
221     long ( WINAPI *SetThumbnailClip )(ITaskbarList3 *This, HWND hwnd,
222         RECT *prcClip);
223
224 };
225
226 #endif /* __cplusplus */
227 #endif /* __ITaskbarList3_INTERFACE_DEFINED__ */
228
229 /* mingw-w64 also fails to define this as of 2.0.1 */
230 #ifndef __IApplicationAssociationRegistrationUI_INTERFACE_DEFINED__
231 #define __IApplicationAssociationRegistrationUI_INTERFACE_DEFINED__
232 const GUID IID_IApplicationAssociationRegistrationUI = {0x1f76a169,0xf994,0x40ac, {0x8f,0xc8,0x09,0x59,0xe8,0x87,0x47,0x10}};
233 const GUID CLSID_ApplicationAssociationRegistrationUI = { 0x1968106d,0xf3b5,0x44cf,{0x89,0x0e,0x11,0x6f,0xcb,0x9e,0xce,0xf1}};
234 #ifdef __cplusplus
235
236 interface IApplicationAssociationRegistrationUI : public IUnknown
237 {
238     virtual HRESULT STDMETHODCALLTYPE LaunchAdvancedAssociationUI(
239         LPCWSTR pszAppRegName) = 0;
240 };
241 #endif /* __cplusplus */
242 #endif /* __IApplicationAssociationRegistrationUI_INTERFACE_DEFINED__ */
243
244 #endif //MINGW_WORKAROUNDS_H