882385cda805571e4d9ac84d70ad3ed00b8a15d5
[reactos.git] / reactos / win32ss / user / ntuser / dce.h
1 #pragma once
2
3 /* DC hook codes */
4 #define DCHC_INVALIDVISRGN 0x0001
5 #define DCHC_DELETEDC 0x0002
6
7 #define DCHF_INVALIDATEVISRGN 0x0001
8 #define DCHF_VALIDATEVISRGN 0x0002
9
10 typedef enum
11 {
12 DCE_CACHE_DC, /* This is a cached DC (allocated by USER) */
13 DCE_CLASS_DC, /* This is a class DC (style CS_CLASSDC) */
14 DCE_WINDOW_DC /* This is a window DC (style CS_OWNDC) */
15 } DCE_TYPE, *PDCE_TYPE;
16
17 typedef struct tagDCE
18 {
19 LIST_ENTRY List;
20 HDC hDC;
21 HWND hwndCurrent;
22 PWND pwndOrg;
23 PWND pwndClip;
24 PWND pwndRedirect;
25 HRGN hrgnClip;
26 HRGN hrgnClipPublic;
27 HRGN hrgnSavedVis;
28 DWORD DCXFlags;
29 PTHREADINFO ptiOwner;
30 PPROCESSINFO ppiOwner;
31 struct _MONITOR* pMonitor;
32 } DCE, *PDCE;
33
34 /* internal DCX flags, see psdk/winuser.h for the rest */
35 #define DCX_DCEEMPTY 0x00000800
36 #define DCX_DCEBUSY 0x00001000
37 #define DCX_DCEDIRTY 0x00002000
38 #define DCX_LAYEREDWIN 0x00004000
39 #define DCX_DCPOWNED 0x00008000
40 #define DCX_NOCLIPCHILDREN 0x00080000
41 #define DCX_NORECOMPUTE 0x00100000
42 #define DCX_INDESTROY 0x00400000
43
44 INIT_FUNCTION NTSTATUS NTAPI InitDCEImpl(VOID);
45 PDCE FASTCALL DceAllocDCE(PWND Window, DCE_TYPE Type);
46 HWND FASTCALL IntWindowFromDC(HDC hDc);
47 void FASTCALL DceFreeDCE(PDCE dce, BOOLEAN Force);
48 void FASTCALL DceEmptyCache(void);
49 VOID FASTCALL DceResetActiveDCEs(PWND Window);
50 void FASTCALL DceFreeClassDCE(HDC);
51 HWND FASTCALL UserGethWnd(HDC,PWNDOBJ*);
52 void FASTCALL DceFreeWindowDCE(PWND);
53 void FASTCALL DceFreeThreadDCE(PTHREADINFO);
54 VOID FASTCALL DceUpdateVisRgn(DCE *Dce, PWND Window, ULONG Flags);
55 DCE* FASTCALL DceGetDceFromDC(HDC hdc);