| 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_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 |