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