Release 20001202.
[wine] / include / dce.h
1 /*
2  * USER DCE definitions
3  *
4  * Copyright 1993 Alexandre Julliard
5  */
6
7 #ifndef __WINE_DCE_H
8 #define __WINE_DCE_H
9
10 #include "windef.h"
11
12 struct tagWND;
13
14 /* additional DCX flags 
15  */
16
17 #define DCX_NORESETATTR         0x00000004
18 #define DCX_EXCLUDEUPDATE       0x00000100
19 #define DCX_INTERSECTUPDATE     0x00000200
20 #define DCX_LOCKWINDOWUPDATE    0x00000400
21 #define DCX_NORECOMPUTE         0x00100000
22 #define DCX_VALIDATE            0x00200000
23
24 #define DCX_DCEEMPTY            0x00000800
25 #define DCX_DCEBUSY             0x00001000
26 #define DCX_DCEDIRTY            0x00002000
27 #define DCX_WINDOWPAINT         0x00020000
28 #define DCX_KEEPCLIPRGN         0x00040000
29 #define DCX_NOCLIPCHILDREN      0x00080000
30
31 typedef enum
32 {
33     DCE_CACHE_DC,   /* This is a cached DC (allocated by USER) */
34     DCE_CLASS_DC,   /* This is a class DC (style CS_CLASSDC) */
35     DCE_WINDOW_DC   /* This is a window DC (style CS_OWNDC) */
36 } DCE_TYPE;
37
38
39 typedef struct tagDCE
40 {
41     struct tagDCE *next;
42     HDC          hDC;
43     HWND         hwndCurrent;
44     HWND         hwndDC;
45     HRGN         hClipRgn;
46     DCE_TYPE       type;
47     DWORD          DCXflags;
48 } DCE;
49
50
51 extern void  DCE_Init(void);
52 extern DCE*  DCE_AllocDCE( HWND hWnd, DCE_TYPE type );
53 extern DCE*  DCE_FreeDCE( DCE *dce );
54 extern void  DCE_FreeWindowDCE( struct tagWND* );
55 extern INT  DCE_ExcludeRgn( HDC, struct tagWND*, HRGN );
56 extern HRGN DCE_GetVisRgn( HWND, WORD, HWND, WORD );
57 extern BOOL DCE_InvalidateDCE( struct tagWND*, const RECT* );
58
59 #endif  /* __WINE_DCE_H */