#pragma once /* Ported from WINE by Jason Filby */ typedef struct tagDCE *PDCE; #include typedef HANDLE HDCE; /* DC hook codes */ #define DCHC_INVALIDVISRGN 0x0001 #define DCHC_DELETEDC 0x0002 #define DCHF_INVALIDATEVISRGN 0x0001 #define DCHF_VALIDATEVISRGN 0x0002 typedef enum { DCE_CACHE_DC, /* This is a cached DC (allocated by USER) */ DCE_CLASS_DC, /* This is a class DC (style CS_CLASSDC) */ DCE_WINDOW_DC /* This is a window DC (style CS_OWNDC) */ } DCE_TYPE, *PDCE_TYPE; typedef struct tagDCE { LIST_ENTRY List; HDC hDC; HWND hwndCurrent; PWND pwndOrg; PWND pwndClip; PWND pwndRedirect; HRGN hrgnClip; HRGN hrgnClipPublic; HRGN hrgnSavedVis; DWORD DCXFlags; PTHREADINFO ptiOwner; PPROCESSINFO ppiOwner; struct _MONITOR* pMonitor; } DCE; /* PDCE already declared at top of file */ /* internal DCX flags, see psdk/winuser.h for the rest */ #define DCX_DCEEMPTY 0x00000800 #define DCX_DCEBUSY 0x00001000 #define DCX_DCEDIRTY 0x00002000 #define DCX_LAYEREDWIN 0x00004000 #define DCX_DCPOWNED 0x00008000 #define DCX_NOCLIPCHILDREN 0x00080000 #define DCX_NORECOMPUTE 0x00100000 #define DCX_INDESTROY 0x00400000 BOOL FASTCALL DCE_Cleanup(PDCE pDce); PDCE FASTCALL DceAllocDCE(PWND Window, DCE_TYPE Type); PDCE FASTCALL DCE_FreeDCE(PDCE dce); VOID FASTCALL DCE_FreeWindowDCE(HWND); INT FASTCALL DCE_ExcludeRgn(HDC, HWND, HRGN); BOOL FASTCALL DCE_InvalidateDCE(HWND, const PRECTL); HWND FASTCALL IntWindowFromDC(HDC hDc); PDCE FASTCALL DceFreeDCE(PDCE dce, BOOLEAN Force); void FASTCALL DceEmptyCache(void); VOID FASTCALL DceResetActiveDCEs(PWND Window); void FASTCALL DceFreeClassDCE(HDC); HWND FASTCALL UserGethWnd(HDC,PWNDOBJ*); void FASTCALL DceFreeWindowDCE(PWND); void FASTCALL DceFreeThreadDCE(PTHREADINFO);