[YAROTOWS] Reintegrate the branch. For a brighter future.
[reactos.git] / reactos / subsystems / win32 / win32k / include / class.h
1 #pragma once
2
3 #include <include/win32.h>
4 #include <include/desktop.h>
5
6 #define IS_ATOM(x) \
7 (((ULONG_PTR)(x) > 0x0) && ((ULONG_PTR)(x) < 0x10000))
8
9 typedef struct _WNDPROC_INFO
10 {
11 WNDPROC WindowProc;
12 BOOL IsUnicode;
13 } WNDPROC_INFO, *PWNDPROC_INFO;
14
15 static __inline BOOL
16 IsCallProcHandle(IN WNDPROC lpWndProc)
17 {
18 /* FIXME - check for 64 bit architectures... */
19 return ((ULONG_PTR)lpWndProc & 0xFFFF0000) == 0xFFFF0000;
20 }
21
22 WNDPROC
23 GetCallProcHandle(IN PCALLPROCDATA CallProc);
24
25 VOID
26 DestroyCallProc(IN PDESKTOPINFO Desktop,
27 IN OUT PCALLPROCDATA CallProc);
28
29 PCALLPROCDATA
30 CloneCallProc(IN PDESKTOP Desktop,
31 IN PCALLPROCDATA CallProc);
32
33 PCALLPROCDATA
34 CreateCallProc(IN PDESKTOP Desktop,
35 IN WNDPROC WndProc,
36 IN BOOL Unicode,
37 IN PPROCESSINFO pi);
38
39 BOOL
40 UserGetCallProcInfo(IN HANDLE hCallProc,
41 OUT PWNDPROC_INFO wpInfo);
42
43 void FASTCALL
44 DestroyProcessClasses(PPROCESSINFO Process );
45
46 PCLS
47 IntReferenceClass(IN OUT PCLS BaseClass,
48 IN OUT PCLS *ClassLink,
49 IN PDESKTOP Desktop);
50
51 VOID
52 IntDereferenceClass(IN OUT PCLS Class,
53 IN PDESKTOPINFO Desktop,
54 IN PPROCESSINFO pi);
55
56 RTL_ATOM
57 UserRegisterClass(IN CONST WNDCLASSEXW* lpwcx,
58 IN PUNICODE_STRING ClassName,
59 IN PUNICODE_STRING MenuName,
60 IN DWORD fnID,
61 IN DWORD dwFlags);
62
63 BOOL
64 UserUnregisterClass(IN PUNICODE_STRING ClassName,
65 IN HINSTANCE hInstance,
66 OUT PCLSMENUNAME pClassMenuName);
67
68 RTL_ATOM
69 IntGetClassAtom(IN PUNICODE_STRING ClassName,
70 IN HINSTANCE hInstance OPTIONAL,
71 IN PPROCESSINFO pi OPTIONAL,
72 OUT PCLS *BaseClass OPTIONAL,
73 OUT PCLS **Link OPTIONAL);
74
75 PCLS
76 IntGetAndReferenceClass(PUNICODE_STRING ClassName, HINSTANCE hInstance);
77
78 PCLS
79 FASTCALL
80 IntCreateClass(IN CONST WNDCLASSEXW* lpwcx,
81 IN PUNICODE_STRING ClassName,
82 IN PUNICODE_STRING MenuName,
83 IN DWORD fnID,
84 IN DWORD dwFlags,
85 IN PDESKTOP Desktop,
86 IN PPROCESSINFO pi);
87
88 BOOL FASTCALL UserRegisterSystemClasses(VOID);
89
90 VOID
91 UserAddCallProcToClass(IN OUT PCLS Class,
92 IN PCALLPROCDATA CallProc);
93
94 BOOL
95 IntGetAtomFromStringOrAtom(IN PUNICODE_STRING ClassName,
96 OUT RTL_ATOM *Atom);
97
98 BOOL
99 IntCheckProcessDesktopClasses(IN PDESKTOP Desktop,
100 IN BOOL FreeOnFailure);
101
102 BOOL FASTCALL LookupFnIdToiCls(int, int * );
103 WNDPROC FASTCALL IntGetClassWndProc(PCLS, BOOL);
104 ULONG_PTR FASTCALL UserGetCPD(PVOID,GETCPD,ULONG_PTR);
105
106 /* EOF */