2010-02-26 11:43:19 +00:00
|
|
|
#pragma once
|
2002-08-25 15:56:54 +00:00
|
|
|
|
|
|
|
/* 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
|
|
|
|
{
|
2007-12-17 20:23:31 +00:00
|
|
|
LIST_ENTRY List;
|
2002-08-25 15:56:54 +00:00
|
|
|
HDC hDC;
|
|
|
|
HWND hwndCurrent;
|
2010-01-12 05:25:22 +00:00
|
|
|
PWND pwndOrg;
|
|
|
|
PWND pwndClip;
|
|
|
|
PWND pwndRedirect;
|
|
|
|
HRGN hrgnClip;
|
|
|
|
HRGN hrgnClipPublic;
|
|
|
|
HRGN hrgnSavedVis;
|
2002-09-01 20:39:56 +00:00
|
|
|
DWORD DCXFlags;
|
2010-01-12 05:25:22 +00:00
|
|
|
PTHREADINFO ptiOwner;
|
|
|
|
PPROCESSINFO ppiOwner;
|
|
|
|
struct _MONITOR* pMonitor;
|
2011-08-27 12:38:23 +00:00
|
|
|
} DCE, *PDCE;
|
2002-08-25 15:56:54 +00:00
|
|
|
|
2007-07-25 03:35:59 +00:00
|
|
|
/* internal DCX flags, see psdk/winuser.h for the rest */
|
2011-08-27 12:38:23 +00:00
|
|
|
#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
|
2007-10-19 23:21:45 +00:00
|
|
|
|
2012-02-20 10:58:55 +00:00
|
|
|
INIT_FUNCTION NTSTATUS NTAPI InitDCEImpl(VOID);
|
2010-10-11 03:41:41 +00:00
|
|
|
PDCE FASTCALL DceAllocDCE(PWND Window, DCE_TYPE Type);
|
2003-08-19 11:48:50 +00:00
|
|
|
HWND FASTCALL IntWindowFromDC(HDC hDc);
|
2014-10-21 14:28:16 +00:00
|
|
|
void FASTCALL DceFreeDCE(PDCE dce, BOOLEAN Force);
|
2003-11-24 21:20:35 +00:00
|
|
|
void FASTCALL DceEmptyCache(void);
|
2010-10-11 03:41:41 +00:00
|
|
|
VOID FASTCALL DceResetActiveDCEs(PWND Window);
|
2017-06-12 19:37:58 +00:00
|
|
|
void FASTCALL DceFreeClassDCE(PDCE);
|
2009-06-02 06:50:36 +00:00
|
|
|
HWND FASTCALL UserGethWnd(HDC,PWNDOBJ*);
|
2010-10-11 03:41:41 +00:00
|
|
|
void FASTCALL DceFreeWindowDCE(PWND);
|
2010-01-28 01:00:09 +00:00
|
|
|
void FASTCALL DceFreeThreadDCE(PTHREADINFO);
|
2014-07-23 16:05:47 +00:00
|
|
|
VOID FASTCALL DceUpdateVisRgn(DCE *Dce, PWND Window, ULONG Flags);
|
|
|
|
DCE* FASTCALL DceGetDceFromDC(HDC hdc);
|