2c8d0b0d0c16854e7ecdc7debdc0833caafd0f25
[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 ULONG_PTR
69 UserGetClassLongPtr(IN PCLS Class,
70 IN INT Index,
71 IN BOOL Ansi);
72
73 RTL_ATOM
74 IntGetClassAtom(IN PUNICODE_STRING ClassName,
75 IN HINSTANCE hInstance OPTIONAL,
76 IN PPROCESSINFO pi OPTIONAL,
77 OUT PCLS *BaseClass OPTIONAL,
78 OUT PCLS **Link OPTIONAL);
79
80 PCLS
81 IntGetAndReferenceClass(PUNICODE_STRING ClassName, HINSTANCE hInstance);
82
83 PCLS
84 FASTCALL
85 IntCreateClass(IN CONST WNDCLASSEXW* lpwcx,
86 IN PUNICODE_STRING ClassName,
87 IN PUNICODE_STRING MenuName,
88 IN DWORD fnID,
89 IN DWORD dwFlags,
90 IN PDESKTOP Desktop,
91 IN PPROCESSINFO pi);
92
93 BOOL FASTCALL UserRegisterSystemClasses(VOID);
94
95 VOID
96 UserAddCallProcToClass(IN OUT PCLS Class,
97 IN PCALLPROCDATA CallProc);
98
99 BOOL
100 IntGetAtomFromStringOrAtom(IN PUNICODE_STRING ClassName,
101 OUT RTL_ATOM *Atom);
102
103 BOOL
104 IntCheckProcessDesktopClasses(IN PDESKTOP Desktop,
105 IN BOOL FreeOnFailure);
106
107 BOOL FASTCALL LookupFnIdToiCls(int, int * );
108 WNDPROC FASTCALL IntGetClassWndProc(PCLS, BOOL);
109 ULONG_PTR FASTCALL UserGetCPD(PVOID,GETCPD,ULONG_PTR);
110
111 /* EOF */