Home | History | Annotate | Download | only in include
      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