/*
* dwmapi.h
*
* Some dwmapi.dll exported functions such as
* DwmFlush
* DwmAttachMilContent
* DwmDetachMilContent
* are not declared in this header for not being documented by Microsoft
*
*/
#ifndef __WINAPI_DWMAPI_H
#define __WINAPI_DWMAPI_H
#include <wtypes.h>
/* for MARGINS structure declaration. */
#include <uxtheme.h>
/*
* This API is available only on Vista+ versions. It's not guarded by version check
* because that would cause problems with Mozilla code (and MSVC doesn't seem to be
* doing that as well).
*/
#ifdef __cplusplus
extern "C" {
#endif
/* FIXME: move to winuser.h */
/* DWM messages. */
#define WM_DWMCOMPOSITIONCHANGED 0x031E
#define WM_DWMNCRENDERINGCHANGED 0x031F
#define WM_DWMCOLORIZATIONCOLORCHANGED 0x0320
#define WM_DWMWINDOWMAXIMIZEDCHANGE 0x0321
/* FIXME end */
#define DWM_EC_DISABLECOMPOSITION 0
#define DWM_EC_ENABLECOMPOSITION 1
#define DWM_BB_ENABLE 0x00000001
#define DWM_BB_BLURREGION 0x00000002
#define DWM_BB_TRANSITIONONMAXIMIZED 0x00000004
typedef struct _DWM_BLURBEHIND {
DWORD dwFlags;
BOOL fEnable;
HRGN hRgnBlur;
BOOL fTransitionOnMaximized;
} DWM_BLURBEHIND, *PDWM_BLURBEHIND;
typedef struct _UNSIGNED_RATIO {
UINT32 uiNumerator;
UINT32 uiDenominator;
} UNSIGNED_RATIO;
typedef enum _DWM_SOURCE_FRAME_SAMPLING {
DWM_SOURCE_FRAME_SAMPLING_POINT = 1,
DWM_SOURCE_FRAME_SAMPLING_COVERAGE,
DWM_SOURCE_FRAME_SAMPLING_LAST
} DWM_SOURCE_FRAME_SAMPLING;
typedef ULONGLONG DWM_FRAME_COUNT;
typedef struct _DWM_PRESENT_PARAMETERS {
UINT32 cbSize;
BOOL fQueue;
DWM_FRAME_COUNT cRefreshStart;
UINT cBuffer;
BOOL fUseSourceRate;
UNSIGNED_RATIO rateSource;
UINT cRefreshesPerFrame;
DWM_SOURCE_FRAME_SAMPLING eSampling;
} DWM_PRESENT_PARAMETERS;
typedef ULONGLONG QPC_TIME;
typedef struct _DWM_TIMING_INFO {
UINT32 cbSize;
UNSIGNED_RATIO rateRefresh;
QPC_TIME qpcRefreshPeriod;
UNSIGNED_RATIO rateCompose;
QPC_TIME qpcVBlank;
DWM_FRAME_COUNT cRefresh;
UINT cDXRefresh;
QPC_TIME qpcCompose;
DWM_FRAME_COUNT cFrame;
UINT cDXPresent;
DWM_FRAME_COUNT cRefreshFrame;
DWM_FRAME_COUNT cFrameSubmitted;
UINT cDXPresentSubmitted;
DWM_FRAME_COUNT cFrameConfirmed;
UINT cDXPresentConfirmed;
DWM_FRAME_COUNT cRefreshConfirmed;
UINT cDXRefreshConfirmed;
DWM_FRAME_COUNT cFramesLate;
UINT cFramesOutstanding;
DWM_FRAME_COUNT cFrameDisplayed;
QPC_TIME qpcFrameDisplayed;
DWM_FRAME_COUNT cRefreshFrameDisplayed;
DWM_FRAME_COUNT cFrameComplete;
QPC_TIME qpcFrameComplete;
DWM_FRAME_COUNT cFramePending;
QPC_TIME qpcFramePending;
DWM_FRAME_COUNT cFramesDisplayed;
DWM_FRAME_COUNT cFramesComplete;
DWM_FRAME_COUNT cFramesPending;
DWM_FRAME_COUNT cFramesAvailable;
DWM_FRAME_COUNT cFramesDropped;
DWM_FRAME_COUNT cFramesMissed;
DWM_FRAME_COUNT cRefreshNextDisplayed;
DWM_FRAME_COUNT cRefreshNextPresented;
DWM_FRAME_COUNT cRefreshesDisplayed;
DWM_FRAME_COUNT cRefreshesPresented;
DWM_FRAME_COUNT cRefreshStarted;
ULONGLONG cPixelsReceived;
ULONGLONG cPixelsDrawn;
DWM_FRAME_COUNT cBuffersEmpty;
} DWM_TIMING_INFO;
typedef enum _DWMWINDOWATTRIBUTE {
DWMWA_NCRENDERING_ENABLED = 1,
DWMWA_NCRENDERING_POLICY,
DWMWA_TRANSITIONS_FORCEDISABLED,
DWMWA_ALLOW_NCPAINT,
DWMWA_CAPTION_BUTTON_BOUNDS,
DWMWA_NONCLIENT_RTL_LAYOUT,
DWMWA_FORCE_ICONIC_REPRESENTATION,
DWMWA_FLIP3D_POLICY,
DWMWA_EXTENDED_FRAME_BOUNDS,
DWMWA_LAST
} DWMWINDOWATTRIBUTE;
#define DWM_TNP_RECTDESTINATION 0x00000001
#define DWM_TNP_RECTSOURCE 0x00000002
#define DWM_TNP_OPACITY 0x00000004
#define DWM_TNP_VISIBLE 0x00000008
#define DWM_TNP_SOURCECLIENTAREAONLY 0x00000010
typedef struct _DWM_THUMBNAIL_PROPERTIES {
DWORD dwFlags;
RECT rcDestination;
RECT rcSource;
BYTE opacity;
BOOL fVisible;
BOOL fSourceClientAreaOnly;
} DWM_THUMBNAIL_PROPERTIES, *PDWM_THUMBNAIL_PROPERTIES;
typedef enum _DWMFLIP3DWINDOWPOLICY {
DWMFLIP3D_DEFAULT,
DWMFLIP3D_EXCLUDEBELOW,
DWMFLIP3D_EXCLUDEABOVE
} DWMFLIP3DWINDOWPOLICY;
typedef enum _DWMNCRENDERINGPOLICY {
DWMNCRP_USEWINDOWSTYLE,
DWMNCRP_DISABLED,
DWMNCRP_ENABLED,
DWMNCRP_LAST
} DWMNCRENDERINGPOLICY;
typedef HANDLE HTHUMBNAIL;
typedef HTHUMBNAIL* PHTHUMBNAIL;
BOOL WINAPI DwmDefWindowProc(
HWND hwnd,
UINT msg,
WPARAM wParam,
LPARAM lParam,
LRESULT *plResult
);
HRESULT WINAPI DwmEnableBlurBehindWindow(
HWND hWnd,
const DWM_BLURBEHIND *pBlurBehind
);
HRESULT WINAPI DwmEnableComposition(
UINT uCompositionAction
);
HRESULT WINAPI DwmEnableMMCSS(
BOOL fEnableMMCSS
);
HRESULT WINAPI DwmExtendFrameIntoClientArea(
HWND hWnd,
const MARGINS *pMarInset
);
HRESULT WINAPI DwmGetColorizationColor(
DWORD *pcrColorization,
BOOL *pfOpaqueBlend
);
HRESULT WINAPI DwmGetCompositionTimingInfo(
HWND hwnd,
DWM_TIMING_INFO *pTimingInfo
);
HRESULT WINAPI DwmGetWindowAttribute(
HWND hwnd,
DWORD dwAttribute,
PVOID pvAttribute,
DWORD cbAttribute
);
HRESULT WINAPI DwmIsCompositionEnabled(
BOOL *pfEnabled
);
HRESULT WINAPI DwmModifyPreviousDxFrameDuration(
HWND hwnd,
INT cRefreshes,
BOOL fRelative
);
HRESULT WINAPI DwmQueryThumbnailSourceSize(
HTHUMBNAIL hThumbnail,
PSIZE pSize
);
HRESULT WINAPI DwmRegisterThumbnail(
HWND hwndDestination,
HWND *hwndSource,
PHTHUMBNAIL phThumbnailId
);
HRESULT WINAPI DwmSetDxFrameDuration(
HWND hwnd,
INT cRefreshes
);
HRESULT WINAPI DwmSetPresentParameters(
HWND hwnd,
DWM_PRESENT_PARAMETERS *pPresentParams
);
HRESULT WINAPI DwmSetWindowAttribute(
HWND hwnd,
DWORD dwAttribute,
LPCVOID pvAttribute,
DWORD cbAttribute
);
HRESULT WINAPI DwmUnregisterThumbnail(
HTHUMBNAIL hThumbnailId
);
HRESULT WINAPI DwmUpdateThumbnailProperties(
HTHUMBNAIL hThumbnailId,
const DWM_THUMBNAIL_PROPERTIES *ptnProperties
);
#ifdef __cplusplus
}
#endif
#endif /* __WINAPI_DWMAPI_H */