| // Licensed under the Apache License, Version 2.0 |
| // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
| // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. |
| // All files in the project carrying such notice may not be copied, modified, or distributed |
| // except according to those terms. |
| //! Procedure declarations, constant definitions, and macros for the NLS component. |
| use shared::basetsd::UINT32; |
| use shared::minwindef::{ |
| BOOL, BYTE, DWORD, HRGN, INT, LPARAM, LPCVOID, LPVOID, LRESULT, UINT, WPARAM |
| }; |
| use shared::windef::{HBITMAP, HWND, POINT, PSIZE, RECT}; |
| use um::uxtheme::MARGINS; |
| use um::winnt::{HANDLE, HRESULT, ULONGLONG}; |
| pub const DWM_BB_ENABLE: DWORD = 0x00000001; |
| pub const DWM_BB_BLURREGION: DWORD = 0x00000002; |
| pub const DWM_BB_TRANSITIONONMAXIMIZED: DWORD = 0x00000004; |
| STRUCT!{#[repr(packed)] struct DWM_BLURBEHIND { |
| dwFlags: DWORD, |
| fEnable: BOOL, |
| hRgnBlur: HRGN, |
| fTransitionOnMaximized: BOOL, |
| }} |
| ENUM!{enum DWMWINDOWATTRIBUTE { |
| DWMWA_NCRENDERING_ENABLED = 1, |
| DWMWA_NCRENDERING_POLICY = 2, |
| DWMWA_TRANSITIONS_FORCEDISABLED = 3, |
| DWMWA_ALLOW_NCPAINT = 4, |
| DWMWA_CAPTION_BUTTON_BOUNDS = 5, |
| DWMWA_NONCLIENT_RTL_LAYOUT = 6, |
| DWMWA_FORCE_ICONIC_REPRESENTATION = 7, |
| DWMWA_FLIP3D_POLICY = 8, |
| DWMWA_EXTENDED_FRAME_BOUNDS = 9, |
| DWMWA_HAS_ICONIC_BITMAP = 10, |
| DWMWA_DISALLOW_PEEK = 11, |
| DWMWA_EXCLUDED_FROM_PEEK = 12, |
| DWMWA_CLOAK = 13, |
| DWMWA_CLOAKED = 14, |
| DWMWA_FREEZE_REPRESENTATION = 15, |
| DWMWA_LAST = 16, |
| }} |
| ENUM!{enum DWMNCRENDERINGPOLICY { |
| DWMNCRP_USEWINDOWSTYLE = 0, |
| DWMNCRP_DISABLED = 1, |
| DWMNCRP_ENABLED = 2, |
| DWMNCRP_LAST = 3, |
| }} |
| ENUM!{enum DWMFLIP3DWINDOWPOLICY { |
| DWMFLIP3D_DEFAULT = 0, |
| DWMFLIP3D_EXCLUDEBELOW = 1, |
| DWMFLIP3D_EXCLUDEABOVE = 2, |
| DWMFLIP3D_LAST = 3, |
| }} |
| pub const DWM_CLOAKED_APP: u32 = 0x00000001; |
| pub const DWM_CLOAKED_SHELL: u32 = 0x00000002; |
| pub const DWM_CLOAKED_INHERITED: u32 = 0x00000004; |
| pub type HTHUMBNAIL = HANDLE; |
| pub type PHTHUMBNAIL = *mut HTHUMBNAIL; |
| pub const DWM_TNP_RECTDESTINATION: DWORD = 0x00000001; |
| pub const DWM_TNP_RECTSOURCE: DWORD = 0x00000002; |
| pub const DWM_TNP_OPACITY: DWORD = 0x00000004; |
| pub const DWM_TNP_VISIBLE: DWORD = 0x00000008; |
| pub const DWM_TNP_SOURCECLIENTAREAONLY: DWORD = 0x00000010; |
| STRUCT!{#[repr(packed)] struct DWM_THUMBNAIL_PROPERTIES { |
| dwFlags: DWORD, |
| rcDestination: RECT, |
| rcSource: RECT, |
| opacity: BYTE, |
| fVisible: BOOL, |
| fSourceClientAreaOnly: BOOL, |
| }} |
| pub type PDWM_THUMBNAIL_PROPERTIES = *mut DWM_THUMBNAIL_PROPERTIES; |
| pub type DWM_FRAME_COUNT = ULONGLONG; |
| pub type QPC_TIME = ULONGLONG; |
| STRUCT!{#[repr(packed)] struct UNSIGNED_RATIO { |
| uiNumerator: UINT32, |
| uiDenominator: UINT32, |
| }} |
| STRUCT!{#[repr(packed)] struct DWM_TIMING_INFO { |
| cbSize: UINT32, |
| rateRefresh: UNSIGNED_RATIO, |
| qpcRefreshPeriod: QPC_TIME, |
| rateCompose: UNSIGNED_RATIO, |
| qpcVBlank: QPC_TIME, |
| cRefresh: DWM_FRAME_COUNT, |
| cDXRefresh: UINT, |
| qpcCompose: QPC_TIME, |
| cFrame: DWM_FRAME_COUNT, |
| cDXPresent: UINT, |
| cRefreshFrame: DWM_FRAME_COUNT, |
| cFrameSubmitted: DWM_FRAME_COUNT, |
| cDXPresentSubmitted: UINT, |
| cFrameConfirmed: DWM_FRAME_COUNT, |
| cDXPresentConfirmed: UINT, |
| cRefreshConfirmed: DWM_FRAME_COUNT, |
| cDXRefreshConfirmed: UINT, |
| cFramesLate: DWM_FRAME_COUNT, |
| cFramesOutstanding: UINT, |
| cFrameDisplayed: DWM_FRAME_COUNT, |
| qpcFrameDisplayed: QPC_TIME, |
| cRefreshFrameDisplayed: DWM_FRAME_COUNT, |
| cFrameComplete: DWM_FRAME_COUNT, |
| qpcFrameComplete: QPC_TIME, |
| cFramePending: DWM_FRAME_COUNT, |
| qpcFramePending: QPC_TIME, |
| 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: DWM_FRAME_COUNT, |
| cPixelsReceived: ULONGLONG, |
| cPixelsDrawn: ULONGLONG, |
| cBuffersEmpty: DWM_FRAME_COUNT, |
| }} |
| ENUM!{enum DWM_SOURCE_FRAME_SAMPLING { |
| DWM_SOURCE_FRAME_SAMPLING_POINT = 0, |
| DWM_SOURCE_FRAME_SAMPLING_COVERAGE = 1, |
| DWM_SOURCE_FRAME_SAMPLING_LAST = 2, |
| }} |
| // pub const c_DwmMaxQueuedBuffers: UINT = 8; |
| // pub const c_DwmMaxMonitors: UINT = 16; |
| // pub const c_DwmMaxAdapters: UINT = 16; |
| STRUCT!{#[repr(packed)] struct DWM_PRESENT_PARAMETERS { |
| cbSize: UINT32, |
| fQueue: BOOL, |
| cRefreshStart: DWM_FRAME_COUNT, |
| cBuffer: UINT, |
| fUseSourceRate: BOOL, |
| rateSource: UNSIGNED_RATIO, |
| cRefreshesPerFrame: UINT, |
| eSampling: DWM_SOURCE_FRAME_SAMPLING, |
| }} |
| // pub const DWM_FRAME_DURATION_DEFAULT: i32 = -1; |
| extern "system" { |
| pub fn DwmDefWindowProc( |
| hWnd: HWND, |
| msg: UINT, |
| wParam: WPARAM, |
| lParam: LPARAM, |
| plResult: *mut LRESULT, |
| ) -> BOOL; |
| pub fn DwmEnableBlurBehindWindow( |
| hWnd: HWND, |
| pBlurBehind: *const DWM_BLURBEHIND, |
| ) -> HRESULT; |
| } |
| pub const DWM_EC_DISABLECOMPOSITION: UINT = 0; |
| pub const DWM_EC_ENABLECOMPOSITION: UINT = 1; |
| extern "system" { |
| pub fn DwmEnableComposition( |
| uCompositionAction: UINT, |
| ) -> HRESULT; |
| pub fn DwmEnableMMCSS( |
| fEnableMMCSS: BOOL, |
| ) -> HRESULT; |
| pub fn DwmExtendFrameIntoClientArea( |
| hWnd: HWND, |
| pMarInset: *const MARGINS, |
| ) -> HRESULT; |
| pub fn DwmGetColorizationColor( |
| pcrColorization: *mut DWORD, |
| pfOpaqueBlend: *mut BOOL, |
| ) -> HRESULT; |
| pub fn DwmGetCompositionTimingInfo( |
| hWnd: HWND, |
| pTimingInfo: *mut DWM_TIMING_INFO, |
| ) -> HRESULT; |
| pub fn DwmGetWindowAttribute( |
| hWnd: HWND, |
| dwAttribute: DWORD, |
| pvAttribute: LPVOID, |
| cbAttribute: DWORD, |
| ) -> HRESULT; |
| pub fn DwmIsCompositionEnabled( |
| pfEnabled: *mut BOOL, |
| ) -> HRESULT; |
| pub fn DwmModifyPreviousDxFrameDuration( |
| hwnd: HWND, |
| cRefreshes: INT, |
| fRelative: BOOL, |
| ) -> HRESULT; |
| pub fn DwmQueryThumbnailSourceSize( |
| hThumbnail: HTHUMBNAIL, |
| pSize: PSIZE, |
| ) -> HRESULT; |
| pub fn DwmRegisterThumbnail( |
| hwndDestination: HWND, |
| hwndSource: HWND, |
| phThumbnailId: PHTHUMBNAIL, |
| ) -> HRESULT; |
| pub fn DwmSetDxFrameDuration( |
| hwnd: HWND, |
| cRefreshes: INT, |
| ) -> HRESULT; |
| pub fn DwmSetPresentParameters( |
| hwnd: HWND, |
| pPresentParams: *mut DWM_PRESENT_PARAMETERS, |
| ) -> HRESULT; |
| pub fn DwmSetWindowAttribute( |
| hWnd: HWND, |
| dwAttribute: DWORD, |
| pvAttribute: LPCVOID, |
| cbAttribute: DWORD, |
| ) -> HRESULT; |
| pub fn DwmUnregisterThumbnail( |
| hThumbnailId: HTHUMBNAIL, |
| ) -> HRESULT; |
| pub fn DwmUpdateThumbnailProperties( |
| hThumbnailId: HTHUMBNAIL, |
| ptnProperties: *const DWM_THUMBNAIL_PROPERTIES, |
| ) -> HRESULT; |
| } |
| pub const DWM_SIT_DISPLAYFRAME: DWORD = 0x00000001; |
| extern "system" { |
| pub fn DwmSetIconicThumbnail( |
| hwnd: HWND, |
| hbmp: HBITMAP, |
| dwSITFlags: DWORD, |
| ) -> HRESULT; |
| pub fn DwmSetIconicLivePreviewBitmap( |
| hwnd: HWND, |
| hbmp: HBITMAP, |
| pptClient: *mut POINT, |
| dwSITFlags: DWORD, |
| ) -> HRESULT; |
| pub fn DwmInvalidateIconicBitmaps( |
| hwnd: HWND, |
| ) -> HRESULT; |
| // pub fn DwmAttachMilContent(hwnd: HWND) -> HRESULT; |
| // pub fn DwmDetachMilContent(hwnd: HWND) -> HRESULT; |
| pub fn DwmFlush() -> HRESULT; |
| // pub fn DwmGetGraphicsStreamTransformHint(); |
| // pub fn DwmGetGraphicsStreamClient(); |
| pub fn DwmGetTransportAttributes( |
| pfIsRemoting: *mut BOOL, |
| pfIsConnected: *mut BOOL, |
| pDwGeneration: *mut DWORD, |
| ) -> HRESULT; |
| } |
| ENUM!{enum DWMTRANSITION_OWNEDWINDOW_TARGET { |
| DWMTRANSITION_OWNEDWINDOW_NULL = -1i32 as u32, |
| DWMTRANSITION_OWNEDWINDOW_REPOSITION = 0, |
| }} |
| extern "system" { |
| pub fn DwmTransitionOwnedWindow( |
| hwnd: HWND, |
| target: DWMTRANSITION_OWNEDWINDOW_TARGET, |
| ) -> HRESULT; |
| } |
| ENUM!{enum GESTURE_TYPE { |
| GT_PEN_TAP = 0, |
| GT_PEN_DOUBLETAP = 1, |
| GT_PEN_RIGHTTAP = 2, |
| GT_PEN_PRESSANDHOLD = 3, |
| GT_PEN_PRESSANDHOLDABORT = 4, |
| GT_TOUCH_TAP = 5, |
| GT_TOUCH_DOUBLETAP = 6, |
| GT_TOUCH_RIGHTTAP = 7, |
| GT_TOUCH_PRESSANDHOLD = 8, |
| GT_TOUCH_PRESSANDHOLDABORT = 9, |
| GT_TOUCH_PRESSANDTAP = 10, |
| }} |
| extern "system" { |
| pub fn DwmRenderGesture( |
| gt: GESTURE_TYPE, |
| cContacts: UINT, |
| pdwPointerID: *const DWORD, |
| pPoints: *const POINT, |
| ) -> HRESULT; |
| pub fn DwmTetherContact( |
| dwPointerID: DWORD, |
| fEnable: BOOL, |
| ptTether: POINT, |
| ) -> HRESULT; |
| } |
| ENUM!{enum DWM_SHOWCONTACT { |
| DWMSC_DOWN = 0x00000001, |
| DWMSC_UP = 0x00000002, |
| DWMSC_DRAG = 0x00000004, |
| DWMSC_HOLD = 0x00000008, |
| DWMSC_PENBARREL = 0x00000010, |
| DWMSC_NONE = 0x00000000, |
| DWMSC_ALL = 0xFFFFFFFF, |
| }} |
| extern "system" { |
| pub fn DwmShowContact( |
| dwPointerID: DWORD, |
| eShowContact: DWM_SHOWCONTACT, |
| ) -> HRESULT; |
| } |