master
  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
 17extern "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_PASSIVE_UPDATE_MODE,
 48    DWMWA_USE_HOSTBACKDROPBRUSH,
 49    DWMWA_USE_IMMERSIVE_DARK_MODE = 20,
 50    DWMWA_WINDOW_CORNER_PREFERENCE = 33,
 51    DWMWA_BORDER_COLOR,
 52    DWMWA_CAPTION_COLOR,
 53    DWMWA_TEXT_COLOR,
 54    DWMWA_VISIBLE_FRAME_BORDER_THICKNESS,
 55    DWMWA_SYSTEMBACKDROP_TYPE,
 56    DWMWA_LAST
 57  };
 58
 59  typedef enum {
 60    DWMWCP_DEFAULT = 0,
 61    DWMWCP_DONOTROUND = 1,
 62    DWMWCP_ROUND = 2,
 63    DWMWCP_ROUNDSMALL = 3
 64  } DWM_WINDOW_CORNER_PREFERENCE;
 65
 66#define DWMWA_COLOR_DEFAULT 0xFFFFFFFF
 67#define DWMWA_COLOR_NONE 0xFFFFFFFE
 68
 69  enum DWM_SYSTEMBACKDROP_TYPE {
 70    DWMSBT_AUTO,
 71    DWMSBT_NONE,
 72    DWMSBT_MAINWINDOW,
 73    DWMSBT_TRANSIENTWINDOW,
 74    DWMSBT_TABBEDWINDOW
 75  };
 76
 77  enum DWMFLIP3DWINDOWPOLICY {
 78    DWMFLIP3D_DEFAULT,
 79    DWMFLIP3D_EXCLUDEBELOW,
 80    DWMFLIP3D_EXCLUDEABOVE,
 81    DWMFLIP3D_LAST
 82  };
 83
 84  enum DWMNCRENDERINGPOLICY {
 85    DWMNCRP_USEWINDOWSTYLE,
 86    DWMNCRP_DISABLED,
 87    DWMNCRP_ENABLED,
 88    DWMNCRP_LAST
 89  };
 90
 91#if NTDDI_VERSION >= NTDDI_WIN8
 92  enum GESTURE_TYPE {
 93    GT_PEN_TAP = 0,
 94    GT_PEN_DOUBLETAP = 1,
 95    GT_PEN_RIGHTTAP = 2,
 96    GT_PEN_PRESSANDHOLD = 3,
 97    GT_PEN_PRESSANDHOLDABORT = 4,
 98    GT_TOUCH_TAP = 5,
 99    GT_TOUCH_DOUBLETAP = 6,
100    GT_TOUCH_RIGHTTAP = 7,
101    GT_TOUCH_PRESSANDHOLD = 8,
102    GT_TOUCH_PRESSANDHOLDABORT = 9,
103    GT_TOUCH_PRESSANDTAP = 10
104  };
105
106  enum DWM_SHOWCONTACT {
107    DWMSC_DOWN = 0x1,
108    DWMSC_UP = 0x2,
109    DWMSC_DRAG = 0x4,
110    DWMSC_HOLD = 0x8,
111    DWMSC_PENBARREL = 0x10,
112    DWMSC_NONE = 0x0,
113    DWMSC_ALL = 0xffffffff
114  };
115
116  DEFINE_ENUM_FLAG_OPERATORS (DWM_SHOWCONTACT);
117#endif
118
119#if NTDDI_VERSION >= NTDDI_WIN10_RS4
120  enum DWM_TAB_WINDOW_REQUIREMENTS {
121    DWMTWR_NONE = 0x0000,
122    DWMTWR_IMPLEMENTED_BY_SYSTEM = 0x0001,
123    DWMTWR_WINDOW_RELATIONSHIP = 0x0002,
124    DWMTWR_WINDOW_STYLES = 0x0004,
125    DWMTWR_WINDOW_REGION = 0x0008,
126    DWMTWR_WINDOW_DWM_ATTRIBUTES = 0x0010,
127    DWMTWR_WINDOW_MARGINS = 0x0020,
128    DWMTWR_TABBING_ENABLED = 0x0040,
129    DWMTWR_USER_POLICY = 0x0080,
130    DWMTWR_GROUP_POLICY = 0x0100,
131    DWMTWR_APP_COMPAT = 0x0200
132  };
133
134  DEFINE_ENUM_FLAG_OPERATORS(DWM_TAB_WINDOW_REQUIREMENTS);
135#endif
136
137  typedef enum {
138    DWM_SOURCE_FRAME_SAMPLING_POINT,
139    DWM_SOURCE_FRAME_SAMPLING_COVERAGE,
140    DWM_SOURCE_FRAME_SAMPLING_LAST
141  } DWM_SOURCE_FRAME_SAMPLING;
142
143  enum DWMTRANSITION_OWNEDWINDOW_TARGET {
144    DWMTRANSITION_OWNEDWINDOW_NULL = -1,
145    DWMTRANSITION_OWNEDWINDOW_REPOSITION = 0
146  };
147
148  typedef struct _DWM_BLURBEHIND {
149    DWORD dwFlags;
150    WINBOOL fEnable;
151    HRGN hRgnBlur;
152    WINBOOL fTransitionOnMaximized;
153  } DWM_BLURBEHIND, *PDWM_BLURBEHIND;
154
155  typedef struct _DWM_THUMBNAIL_PROPERTIES {
156    DWORD dwFlags;
157    RECT rcDestination;
158    RECT rcSource;
159    BYTE opacity;
160    WINBOOL fVisible;
161    WINBOOL fSourceClientAreaOnly;
162  } DWM_THUMBNAIL_PROPERTIES, *PDWM_THUMBNAIL_PROPERTIES;
163
164  typedef struct _UNSIGNED_RATIO {
165    UINT32 uiNumerator;
166    UINT32 uiDenominator;
167  } UNSIGNED_RATIO;
168
169  typedef struct _DWM_TIMING_INFO {
170    UINT32 cbSize;
171    UNSIGNED_RATIO rateRefresh;
172    QPC_TIME qpcRefreshPeriod;
173    UNSIGNED_RATIO rateCompose;
174    QPC_TIME qpcVBlank;
175    DWM_FRAME_COUNT cRefresh;
176    UINT cDXRefresh;
177    QPC_TIME qpcCompose;
178    DWM_FRAME_COUNT cFrame;
179    UINT cDXPresent;
180    DWM_FRAME_COUNT cRefreshFrame;
181    DWM_FRAME_COUNT cFrameSubmitted;
182    UINT cDXPresentSubmitted;
183    DWM_FRAME_COUNT cFrameConfirmed;
184    UINT cDXPresentConfirmed;
185    DWM_FRAME_COUNT cRefreshConfirmed;
186    UINT cDXRefreshConfirmed;
187    DWM_FRAME_COUNT cFramesLate;
188    UINT cFramesOutstanding;
189    DWM_FRAME_COUNT cFrameDisplayed;
190    QPC_TIME qpcFrameDisplayed;
191    DWM_FRAME_COUNT cRefreshFrameDisplayed;
192    DWM_FRAME_COUNT cFrameComplete;
193    QPC_TIME qpcFrameComplete;
194    DWM_FRAME_COUNT cFramePending;
195    QPC_TIME qpcFramePending;
196    DWM_FRAME_COUNT cFramesDisplayed;
197    DWM_FRAME_COUNT cFramesComplete;
198    DWM_FRAME_COUNT cFramesPending;
199    DWM_FRAME_COUNT cFramesAvailable;
200    DWM_FRAME_COUNT cFramesDropped;
201    DWM_FRAME_COUNT cFramesMissed;
202    DWM_FRAME_COUNT cRefreshNextDisplayed;
203    DWM_FRAME_COUNT cRefreshNextPresented;
204    DWM_FRAME_COUNT cRefreshesDisplayed;
205    DWM_FRAME_COUNT cRefreshesPresented;
206    DWM_FRAME_COUNT cRefreshStarted;
207    ULONGLONG cPixelsReceived;
208    ULONGLONG cPixelsDrawn;
209    DWM_FRAME_COUNT cBuffersEmpty;
210  } DWM_TIMING_INFO;
211
212  typedef struct _DWM_PRESENT_PARAMETERS {
213    UINT32 cbSize;
214    WINBOOL fQueue;
215    DWM_FRAME_COUNT cRefreshStart;
216    UINT cBuffer;
217    WINBOOL fUseSourceRate;
218    UNSIGNED_RATIO rateSource;
219    UINT cRefreshesPerFrame;
220    DWM_SOURCE_FRAME_SAMPLING eSampling;
221  } DWM_PRESENT_PARAMETERS;
222
223#ifndef _MIL_MATRIX3X2D_DEFINED
224#define _MIL_MATRIX3X2D_DEFINED
225
226  typedef struct _MilMatrix3x2D {
227    DOUBLE S_11;
228    DOUBLE S_12;
229    DOUBLE S_21;
230    DOUBLE S_22;
231    DOUBLE DX;
232    DOUBLE DY;
233  } MilMatrix3x2D;
234#endif
235
236#ifndef MILCORE_MIL_MATRIX3X2D_COMPAT_TYPEDEF
237#define MILCORE_MIL_MATRIX3X2D_COMPAT_TYPEDEF
238  typedef MilMatrix3x2D MIL_MATRIX3X2D;
239#endif
240
241#include <poppack.h>
242
243#define DWM_BB_ENABLE 0x1
244#define DWM_BB_BLURREGION 0x2
245#define DWM_BB_TRANSITIONONMAXIMIZED 0x4
246
247#define DWM_CLOAKED_APP 0x1
248#define DWM_CLOAKED_SHELL 0x2
249#define DWM_CLOAKED_INHERITED 0x4
250
251#define DWM_TNP_RECTDESTINATION 0x1
252#define DWM_TNP_RECTSOURCE 0x2
253#define DWM_TNP_OPACITY 0x4
254#define DWM_TNP_VISIBLE 0x8
255#define DWM_TNP_SOURCECLIENTAREAONLY 0x10
256
257#define DWM_FRAME_DURATION_DEFAULT -1
258
259#define c_DwmMaxQueuedBuffers 8
260#define c_DwmMaxMonitors 16
261#define c_DwmMaxAdapters 16
262
263#define DWM_EC_DISABLECOMPOSITION 0
264#define DWM_EC_ENABLECOMPOSITION 1
265
266#if _WIN32_WINNT >= 0x0601
267#define DWM_SIT_DISPLAYFRAME 0x1
268#endif
269
270  DWMAPI_(WINBOOL) DwmDefWindowProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, LRESULT *plResult);
271  DWMAPI DwmEnableBlurBehindWindow (HWND hWnd, const DWM_BLURBEHIND *pBlurBehind);
272  DWMAPI DwmEnableComposition (UINT uCompositionAction);
273  DWMAPI DwmEnableMMCSS (WINBOOL fEnableMMCSS);
274  DWMAPI DwmExtendFrameIntoClientArea (HWND hWnd, const MARGINS *pMarInset);
275  DWMAPI DwmGetColorizationColor (DWORD *pcrColorization, WINBOOL *pfOpaqueBlend);
276  DWMAPI DwmGetCompositionTimingInfo (HWND hwnd, DWM_TIMING_INFO *pTimingInfo);
277  DWMAPI DwmGetWindowAttribute (HWND hwnd, DWORD dwAttribute, PVOID pvAttribute, DWORD cbAttribute);
278  DWMAPI DwmIsCompositionEnabled (WINBOOL *pfEnabled);
279  DWMAPI DwmModifyPreviousDxFrameDuration (HWND hwnd, INT cRefreshes, WINBOOL fRelative);
280  DWMAPI DwmQueryThumbnailSourceSize (HTHUMBNAIL hThumbnail, PSIZE pSize);
281  DWMAPI DwmRegisterThumbnail (HWND hwndDestination, HWND hwndSource, PHTHUMBNAIL phThumbnailId);
282  DWMAPI DwmSetDxFrameDuration (HWND hwnd, INT cRefreshes);
283  DWMAPI DwmSetPresentParameters (HWND hwnd, DWM_PRESENT_PARAMETERS *pPresentParams);
284  DWMAPI DwmSetWindowAttribute (HWND hwnd, DWORD dwAttribute, LPCVOID pvAttribute, DWORD cbAttribute);
285  DWMAPI DwmUnregisterThumbnail (HTHUMBNAIL hThumbnailId);
286  DWMAPI DwmUpdateThumbnailProperties (HTHUMBNAIL hThumbnailId, const DWM_THUMBNAIL_PROPERTIES *ptnProperties);
287  DWMAPI DwmAttachMilContent (HWND hwnd);
288  DWMAPI DwmDetachMilContent (HWND hwnd);
289  DWMAPI DwmFlush (void);
290  DWMAPI DwmGetGraphicsStreamTransformHint (UINT uIndex, MilMatrix3x2D *pTransform);
291  DWMAPI DwmGetGraphicsStreamClient (UINT uIndex, UUID *pClientUuid);
292  DWMAPI DwmGetTransportAttributes (WINBOOL *pfIsRemoting, WINBOOL *pfIsConnected, DWORD *pDwGeneration);
293  DWMAPI DwmTransitionOwnedWindow (HWND hwnd, enum DWMTRANSITION_OWNEDWINDOW_TARGET target);
294#if _WIN32_WINNT >= 0x0601
295  DWMAPI DwmSetIconicThumbnail (HWND hwnd, HBITMAP hbmp, DWORD dwSITFlags);
296  DWMAPI DwmSetIconicLivePreviewBitmap (HWND hwnd, HBITMAP hbmp, POINT *pptClient, DWORD dwSITFlags);
297  DWMAPI DwmInvalidateIconicBitmaps (HWND hwnd);
298#endif
299#if NTDDI_VERSION >= NTDDI_WIN8
300  DWMAPI DwmRenderGesture (enum GESTURE_TYPE gt, UINT cContacts, const DWORD *pdwPointerID, const POINT *pPoints);
301  DWMAPI DwmTetherContact (DWORD dwPointerID, WINBOOL fEnable, POINT ptTether);
302  DWMAPI DwmShowContact (DWORD dwPointerID, enum DWM_SHOWCONTACT eShowContact);
303#endif
304#if NTDDI_VERSION >= NTDDI_WIN10_RS4
305  DWMAPI DwmGetUnmetTabRequirements (HWND appWindow, enum DWM_TAB_WINDOW_REQUIREMENTS *value);
306#endif
307
308#ifdef __cplusplus
309}
310#endif
311#endif
312#endif