1 /**
2  * This file is part of the mingw-w64 runtime package.
3  * No warranty is given; refer to the file DISCLAIMER within this package.
4  */
5 #include <winapifamily.h>
6 
7 #ifndef _DWMAPI_H_
8 #define _DWMAPI_H_
9 
10 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
11 #ifndef DWMAPI
12 #define DWMAPI EXTERN_C DECLSPEC_IMPORT HRESULT WINAPI
13 #define DWMAPI_(type) EXTERN_C DECLSPEC_IMPORT type WINAPI
14 #endif
15 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
20 #include <wtypes.h>
21 #include <uxtheme.h>
22 
23 #include <pshpack1.h>
24 
25   typedef ULONGLONG DWM_FRAME_COUNT;
26   typedef ULONGLONG QPC_TIME;
27 
28   typedef HANDLE HTHUMBNAIL;
29   typedef HTHUMBNAIL *PHTHUMBNAIL;
30 
31   enum DWMWINDOWATTRIBUTE {
32     DWMWA_NCRENDERING_ENABLED = 1,
33     DWMWA_NCRENDERING_POLICY,
34     DWMWA_TRANSITIONS_FORCEDISABLED,
35     DWMWA_ALLOW_NCPAINT,
36     DWMWA_CAPTION_BUTTON_BOUNDS,
37     DWMWA_NONCLIENT_RTL_LAYOUT,
38     DWMWA_FORCE_ICONIC_REPRESENTATION,
39     DWMWA_FLIP3D_POLICY,
40     DWMWA_EXTENDED_FRAME_BOUNDS,
41     DWMWA_HAS_ICONIC_BITMAP,
42     DWMWA_DISALLOW_PEEK,
43     DWMWA_EXCLUDED_FROM_PEEK,
44     DWMWA_CLOAK,
45     DWMWA_CLOAKED,
46     DWMWA_FREEZE_REPRESENTATION,
47     DWMWA_LAST
48   };
49 
50   enum DWMFLIP3DWINDOWPOLICY {
51     DWMFLIP3D_DEFAULT,
52     DWMFLIP3D_EXCLUDEBELOW,
53     DWMFLIP3D_EXCLUDEABOVE,
54     DWMFLIP3D_LAST
55   };
56 
57   enum DWMNCRENDERINGPOLICY {
58     DWMNCRP_USEWINDOWSTYLE,
59     DWMNCRP_DISABLED,
60     DWMNCRP_ENABLED,
61     DWMNCRP_LAST
62   };
63 
64 #if NTDDI_VERSION >= 0x06020000
65   enum GESTURE_TYPE {
66     GT_PEN_TAP = 0,
67     GT_PEN_DOUBLETAP = 1,
68     GT_PEN_RIGHTTAP = 2,
69     GT_PEN_PRESSANDHOLD = 3,
70     GT_PEN_PRESSANDHOLDABORT = 4,
71     GT_TOUCH_TAP = 5,
72     GT_TOUCH_DOUBLETAP = 6,
73     GT_TOUCH_RIGHTTAP = 7,
74     GT_TOUCH_PRESSANDHOLD = 8,
75     GT_TOUCH_PRESSANDHOLDABORT = 9,
76     GT_TOUCH_PRESSANDTAP = 10,
77   };
78 
79   enum DWM_SHOWCONTACT {
80     DWMSC_DOWN = 0x1,
81     DWMSC_UP = 0x2,
82     DWMSC_DRAG = 0x4,
83     DWMSC_HOLD = 0x8,
84     DWMSC_PENBARREL = 0x10,
85     DWMSC_NONE = 0x0,
86     DWMSC_ALL = 0xffffffff
87   };
88 
89   DEFINE_ENUM_FLAG_OPERATORS (DWM_SHOWCONTACT);
90 #endif
91 
92   typedef enum {
93     DWM_SOURCE_FRAME_SAMPLING_POINT,
94     DWM_SOURCE_FRAME_SAMPLING_COVERAGE,
95     DWM_SOURCE_FRAME_SAMPLING_LAST
96   } DWM_SOURCE_FRAME_SAMPLING;
97 
98   enum DWMTRANSITION_OWNEDWINDOW_TARGET {
99     DWMTRANSITION_OWNEDWINDOW_NULL = -1,
100     DWMTRANSITION_OWNEDWINDOW_REPOSITION = 0,
101   };
102 
103   typedef struct _DWM_BLURBEHIND {
104     DWORD dwFlags;
105     WINBOOL fEnable;
106     HRGN hRgnBlur;
107     WINBOOL fTransitionOnMaximized;
108   } DWM_BLURBEHIND, *PDWM_BLURBEHIND;
109 
110   typedef struct _DWM_THUMBNAIL_PROPERTIES {
111     DWORD dwFlags;
112     RECT rcDestination;
113     RECT rcSource;
114     BYTE opacity;
115     WINBOOL fVisible;
116     WINBOOL fSourceClientAreaOnly;
117   } DWM_THUMBNAIL_PROPERTIES, *PDWM_THUMBNAIL_PROPERTIES;
118 
119   typedef struct _UNSIGNED_RATIO {
120     UINT32 uiNumerator;
121     UINT32 uiDenominator;
122   } UNSIGNED_RATIO;
123 
124   typedef struct _DWM_TIMING_INFO {
125     UINT32 cbSize;
126     UNSIGNED_RATIO rateRefresh;
127     QPC_TIME qpcRefreshPeriod;
128     UNSIGNED_RATIO rateCompose;
129     QPC_TIME qpcVBlank;
130     DWM_FRAME_COUNT cRefresh;
131     UINT cDXRefresh;
132     QPC_TIME qpcCompose;
133     DWM_FRAME_COUNT cFrame;
134     UINT cDXPresent;
135     DWM_FRAME_COUNT cRefreshFrame;
136     DWM_FRAME_COUNT cFrameSubmitted;
137     UINT cDXPresentSubmitted;
138     DWM_FRAME_COUNT cFrameConfirmed;
139     UINT cDXPresentConfirmed;
140     DWM_FRAME_COUNT cRefreshConfirmed;
141     UINT cDXRefreshConfirmed;
142     DWM_FRAME_COUNT cFramesLate;
143     UINT cFramesOutstanding;
144     DWM_FRAME_COUNT cFrameDisplayed;
145     QPC_TIME qpcFrameDisplayed;
146     DWM_FRAME_COUNT cRefreshFrameDisplayed;
147     DWM_FRAME_COUNT cFrameComplete;
148     QPC_TIME qpcFrameComplete;
149     DWM_FRAME_COUNT cFramePending;
150     QPC_TIME qpcFramePending;
151     DWM_FRAME_COUNT cFramesDisplayed;
152     DWM_FRAME_COUNT cFramesComplete;
153     DWM_FRAME_COUNT cFramesPending;
154     DWM_FRAME_COUNT cFramesAvailable;
155     DWM_FRAME_COUNT cFramesDropped;
156     DWM_FRAME_COUNT cFramesMissed;
157     DWM_FRAME_COUNT cRefreshNextDisplayed;
158     DWM_FRAME_COUNT cRefreshNextPresented;
159     DWM_FRAME_COUNT cRefreshesDisplayed;
160     DWM_FRAME_COUNT cRefreshesPresented;
161     DWM_FRAME_COUNT cRefreshStarted;
162     ULONGLONG cPixelsReceived;
163     ULONGLONG cPixelsDrawn;
164     DWM_FRAME_COUNT cBuffersEmpty;
165   } DWM_TIMING_INFO;
166 
167   typedef struct _DWM_PRESENT_PARAMETERS {
168     UINT32 cbSize;
169     WINBOOL fQueue;
170     DWM_FRAME_COUNT cRefreshStart;
171     UINT cBuffer;
172     WINBOOL fUseSourceRate;
173     UNSIGNED_RATIO rateSource;
174     UINT cRefreshesPerFrame;
175     DWM_SOURCE_FRAME_SAMPLING eSampling;
176   } DWM_PRESENT_PARAMETERS;
177 
178 #ifndef _MIL_MATRIX3X2D_DEFINED
179 #define _MIL_MATRIX3X2D_DEFINED
180 
181   typedef struct _MilMatrix3x2D {
182     DOUBLE S_11;
183     DOUBLE S_12;
184     DOUBLE S_21;
185     DOUBLE S_22;
186     DOUBLE DX;
187     DOUBLE DY;
188   } MilMatrix3x2D;
189 #endif
190 
191 #ifndef MILCORE_MIL_MATRIX3X2D_COMPAT_TYPEDEF
192 #define MILCORE_MIL_MATRIX3X2D_COMPAT_TYPEDEF
193   typedef MilMatrix3x2D MIL_MATRIX3X2D;
194 #endif
195 
196 #include <poppack.h>
197 
198 #define DWM_BB_ENABLE 0x1
199 #define DWM_BB_BLURREGION 0x2
200 #define DWM_BB_TRANSITIONONMAXIMIZED 0x4
201 
202 #define DWM_CLOAKED_APP 0x1
203 #define DWM_CLOAKED_SHELL 0x2
204 #define DWM_CLOAKED_INHERITED 0x4
205 
206 #define DWM_TNP_RECTDESTINATION 0x1
207 #define DWM_TNP_RECTSOURCE 0x2
208 #define DWM_TNP_OPACITY 0x4
209 #define DWM_TNP_VISIBLE 0x8
210 #define DWM_TNP_SOURCECLIENTAREAONLY 0x10
211 
212 #define DWM_FRAME_DURATION_DEFAULT -1
213 
214 #define c_DwmMaxQueuedBuffers 8
215 #define c_DwmMaxMonitors 16
216 #define c_DwmMaxAdapters 16
217 
218 #define DWM_EC_DISABLECOMPOSITION 0
219 #define DWM_EC_ENABLECOMPOSITION 1
220 
221 #if _WIN32_WINNT >= 0x0601
222 #define DWM_SIT_DISPLAYFRAME 0x1
223 #endif
224 
225   WINBOOL WINAPI DwmDefWindowProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, LRESULT *plResult);
226   HRESULT WINAPI DwmEnableBlurBehindWindow (HWND hWnd, const DWM_BLURBEHIND *pBlurBehind);
227   HRESULT WINAPI DwmEnableComposition (UINT uCompositionAction);
228   HRESULT WINAPI DwmEnableMMCSS (WINBOOL fEnableMMCSS);
229   HRESULT WINAPI DwmExtendFrameIntoClientArea (HWND hWnd, const MARGINS *pMarInset);
230   HRESULT WINAPI DwmGetColorizationColor (DWORD *pcrColorization, WINBOOL *pfOpaqueBlend);
231   HRESULT WINAPI DwmGetCompositionTimingInfo (HWND hwnd, DWM_TIMING_INFO *pTimingInfo);
232   HRESULT WINAPI DwmGetWindowAttribute (HWND hwnd, DWORD dwAttribute, PVOID pvAttribute, DWORD cbAttribute);
233   HRESULT WINAPI DwmIsCompositionEnabled (WINBOOL *pfEnabled);
234   HRESULT WINAPI DwmModifyPreviousDxFrameDuration (HWND hwnd, INT cRefreshes, WINBOOL fRelative);
235   HRESULT WINAPI DwmQueryThumbnailSourceSize (HTHUMBNAIL hThumbnail, PSIZE pSize);
236   HRESULT WINAPI DwmRegisterThumbnail (HWND hwndDestination, HWND hwndSource, PHTHUMBNAIL phThumbnailId);
237   HRESULT WINAPI DwmSetDxFrameDuration (HWND hwnd, INT cRefreshes);
238   HRESULT WINAPI DwmSetPresentParameters (HWND hwnd, DWM_PRESENT_PARAMETERS *pPresentParams);
239   HRESULT WINAPI DwmSetWindowAttribute (HWND hwnd, DWORD dwAttribute, LPCVOID pvAttribute, DWORD cbAttribute);
240   HRESULT WINAPI DwmUnregisterThumbnail (HTHUMBNAIL hThumbnailId);
241   HRESULT WINAPI DwmUpdateThumbnailProperties (HTHUMBNAIL hThumbnailId, const DWM_THUMBNAIL_PROPERTIES *ptnProperties);
242   HRESULT WINAPI DwmAttachMilContent (HWND hwnd);
243   HRESULT WINAPI DwmDetachMilContent (HWND hwnd);
244   HRESULT WINAPI DwmFlush ();
245   HRESULT WINAPI DwmGetGraphicsStreamTransformHint (UINT uIndex, MilMatrix3x2D *pTransform);
246   HRESULT WINAPI DwmGetGraphicsStreamClient (UINT uIndex, UUID *pClientUuid);
247   HRESULT WINAPI DwmGetTransportAttributes (WINBOOL *pfIsRemoting, WINBOOL *pfIsConnected, DWORD *pDwGeneration);
248   HRESULT WINAPI DwmTransitionOwnedWindow (HWND hwnd, enum DWMTRANSITION_OWNEDWINDOW_TARGET target);
249 #if _WIN32_WINNT >= 0x0601
250   HRESULT WINAPI DwmSetIconicThumbnail (HWND hwnd, HBITMAP hbmp, DWORD dwSITFlags);
251   HRESULT WINAPI DwmSetIconicLivePreviewBitmap (HWND hwnd, HBITMAP hbmp, POINT *pptClient, DWORD dwSITFlags);
252   HRESULT WINAPI DwmInvalidateIconicBitmaps (HWND hwnd);
253 #endif
254 #if NTDDI_VERSION >= 0x06020000
255   HRESULT WINAPI DwmRenderGesture (enum GESTURE_TYPE gt, UINT cContacts, const DWORD *pdwPointerID, const POINT *pPoints);
256   HRESULT WINAPI DwmTetherContact (DWORD dwPointerID, WINBOOL fEnable, POINT ptTether);
257   HRESULT WINAPI DwmShowContact (DWORD dwPointerID, enum DWM_SHOWCONTACT eShowContact);
258 #endif
259 
260 #ifdef __cplusplus
261 }
262 #endif
263 #endif
264 #endif
265