bluray: fix disappearing of overlays
[vlc/gmpfix.git] / include / vlc_windows_interfaces.h
blobc7a6c0ea5f8435c98f8b106233afc1e059ea36d4
1 /*****************************************************************************
2 * vlc_windows_interfaces.h : Replacement for incomplete MinGW headers
3 ****************************************************************************
5 * Copyright (C) 2009-2010 VideoLAN
7 * Authors: Geoffroy Couprie <geal@videolan.org>
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.
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.
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 *****************************************************************************/
24 #ifndef MINGW_WORKAROUNDS_H
25 #define MINGW_WORKAROUNDS_H
27 #ifdef __MINGW32__
28 # include <_mingw.h>
29 #endif
31 #ifdef __MINGW64_VERSION_MAJOR /* mingw.org lacks this header */
32 # include <shobjidl.h>
33 #endif
35 #include <commctrl.h>
36 #include <basetyps.h>
37 #include <objbase.h>
39 /* rpcndr.h defines small not only for idl */
40 #undef small
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}};
49 typedef enum TBPFLAG
51 TBPF_NOPROGRESS = 0,
52 TBPF_INDETERMINATE = 0x1,
53 TBPF_NORMAL = 0x2,
54 TBPF_ERROR = 0x4,
55 TBPF_PAUSED = 0x8
56 } TBPFLAG;
58 typedef struct tagTHUMBBUTTON
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;
69 typedef struct tagTHUMBBUTTON *LPTHUMBBUTTON;
71 typedef enum THUMBBUTTONMASK {
72 THB_BITMAP = 0x1,
73 THB_ICON = 0x2,
74 THB_TOOLTIP = 0x4,
75 THB_FLAGS = 0x8
76 } THUMBBUTTONMASK;
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;
87 #ifdef __cplusplus
88 interface ITaskbarList : public IUnknown {
89 public:
90 virtual HRESULT WINAPI HrInit(void) = 0;
91 virtual HRESULT WINAPI AddTab(HWND hwnd) = 0;
92 virtual HRESULT WINAPI DeleteTab(HWND hwnd) = 0;
93 virtual HRESULT WINAPI ActivateTab(HWND hwnd) = 0;
94 virtual HRESULT WINAPI SetActiveAlt(HWND hwnd) = 0;
97 interface ITaskbarList2 : public ITaskbarList {
98 public:
99 virtual HRESULT WINAPI MarkFullscreenWindow(HWND hwnd,WINBOOL fFullscreen) = 0;
102 interface ITaskbarList3 : public ITaskbarList2
104 virtual HRESULT STDMETHODCALLTYPE SetProgressValue(
105 HWND hwnd,
106 ULONGLONG ullCompleted,
107 ULONGLONG ullTotal) = 0;
109 virtual HRESULT STDMETHODCALLTYPE SetProgressState(
110 HWND hwnd,
111 TBPFLAG tbpFlags) = 0;
113 virtual HRESULT STDMETHODCALLTYPE RegisterTab(
114 HWND hwndTab,
115 HWND hwndMDI) = 0;
117 virtual HRESULT STDMETHODCALLTYPE UnregisterTab(
118 HWND hwndTab) = 0;
120 virtual HRESULT STDMETHODCALLTYPE SetTabOrder(
121 HWND hwndTab,
122 HWND hwndInsertBefore) = 0;
124 virtual HRESULT STDMETHODCALLTYPE SetTabActive(
125 HWND hwndTab,
126 HWND hwndMDI,
127 DWORD dwReserved) = 0;
129 virtual HRESULT STDMETHODCALLTYPE ThumbBarAddButtons(
130 HWND hwnd,
131 UINT cButtons,
132 LPTHUMBBUTTON pButton) = 0;
134 virtual HRESULT STDMETHODCALLTYPE ThumbBarUpdateButtons(
135 HWND hwnd,
136 UINT cButtons,
137 LPTHUMBBUTTON pButton) = 0;
139 virtual HRESULT STDMETHODCALLTYPE ThumbBarSetImageList(
140 HWND hwnd,
141 HIMAGELIST himl) = 0;
143 virtual HRESULT STDMETHODCALLTYPE SetOverlayIcon(
144 HWND hwnd,
145 HICON hIcon,
146 LPCWSTR pszDescription) = 0;
148 virtual HRESULT STDMETHODCALLTYPE SetThumbnailTooltip(
149 HWND hwnd,
150 LPCWSTR pszTip) = 0;
152 virtual HRESULT STDMETHODCALLTYPE SetThumbnailClip(
153 HWND hwnd,
154 RECT *prcClip) = 0;
158 #else /* !__cplusplus */
160 struct ITaskbarList3Vtbl;
161 struct ITaskbarList3 { struct ITaskbarList3Vtbl* lpVtbl; };
162 typedef struct ITaskbarList3 ITaskbarList3;
164 struct ITaskbarList3Vtbl
167 long ( WINAPI *QueryInterface )(ITaskbarList3 * This, REFIID riid, void **ppvObject);
169 long ( WINAPI *AddRef )(ITaskbarList3 *This);
171 long ( WINAPI *Release )(ITaskbarList3 *This);
173 long ( WINAPI *HrInit )(ITaskbarList3 *This);
175 long ( WINAPI *AddTab )(ITaskbarList3 *This, HWND hwnd);
177 long ( WINAPI *DeleteTab )(ITaskbarList3 *This, HWND hwnd);
179 long ( WINAPI *ActivateTab )(ITaskbarList3 *This, HWND hwnd);
181 long ( WINAPI *SetActiveAlt )(ITaskbarList3 *This, HWND hwnd);
183 long ( WINAPI *MarkFullscreenWindow )(ITaskbarList3 *This, HWND hwnd,
184 BOOL fFullscreen);
186 long ( WINAPI *SetProgressValue )(ITaskbarList3 *This, HWND hwnd,
187 ULONGLONG ullCompleted, ULONGLONG ullTotal);
189 long ( WINAPI *SetProgressState )(ITaskbarList3 *This, HWND hwnd,
190 TBPFLAG tbpFlags);
192 long ( WINAPI *RegisterTab )( ITaskbarList3 *This, HWND hwndTab, HWND hwndMDI);
194 long ( WINAPI *UnregisterTab )(ITaskbarList3 *This, HWND hwndTab);
196 long ( WINAPI *SetTabOrder )(ITaskbarList3 *This, HWND hwndTab,
197 HWND hwndInsertBefore);
199 long ( WINAPI *SetTabActive )(ITaskbarList3 *This, HWND hwndTab,
200 HWND hwndMDI, DWORD dwReserved);
202 long ( WINAPI *ThumbBarAddButtons )(ITaskbarList3 *This, HWND hwnd,
203 UINT cButtons, LPTHUMBBUTTON pButton);
205 long ( WINAPI *ThumbBarUpdateButtons )(ITaskbarList3 *This, HWND hwnd,
206 UINT cButtons, LPTHUMBBUTTON pButton);
208 long ( WINAPI *ThumbBarSetImageList )(ITaskbarList3 *This, HWND hwnd,
209 HIMAGELIST himl);
211 long ( WINAPI *SetOverlayIcon )(ITaskbarList3 *This, HWND hwnd,
212 HICON hIcon, LPCWSTR pszDescription);
214 long ( WINAPI *SetThumbnailTooltip )(ITaskbarList3 *This, HWND hwnd,
215 LPCWSTR pszTip);
217 long ( WINAPI *SetThumbnailClip )(ITaskbarList3 *This, HWND hwnd,
218 RECT *prcClip);
222 #endif /* __cplusplus */
223 #endif /* __ITaskbarList3_INTERFACE_DEFINED__ */
225 /* mingw-w64 also fails to define these as of 2.0.1 */
227 #ifndef THBN_CLICKED
228 # define THBN_CLICKED 0x1800
229 #endif
231 #ifndef __IApplicationAssociationRegistrationUI_INTERFACE_DEFINED__
232 #define __IApplicationAssociationRegistrationUI_INTERFACE_DEFINED__
233 const GUID IID_IApplicationAssociationRegistrationUI = {0x1f76a169,0xf994,0x40ac, {0x8f,0xc8,0x09,0x59,0xe8,0x87,0x47,0x10}};
234 const GUID CLSID_ApplicationAssociationRegistrationUI = { 0x1968106d,0xf3b5,0x44cf,{0x89,0x0e,0x11,0x6f,0xcb,0x9e,0xce,0xf1}};
235 #ifdef __cplusplus
237 interface IApplicationAssociationRegistrationUI : public IUnknown
239 virtual HRESULT STDMETHODCALLTYPE LaunchAdvancedAssociationUI(
240 LPCWSTR pszAppRegName) = 0;
242 #endif /* __cplusplus */
243 #endif /* __IApplicationAssociationRegistrationUI_INTERFACE_DEFINED__ */
245 #endif //MINGW_WORKAROUNDS_H