revert my temporary class hacks and remove my desktop handling changes temporarily...
[reactos.git] / reactos / subsys / win32k / include / class.h
1 #ifndef _WIN32K_CLASS_H
2 #define _WIN32K_CLASS_H
3
4 #include <windows.h>
5 #include <ddk/ntddk.h>
6 #include <ddk/ntapi.h>
7 #include <napi/win32.h>
8
9 #define IS_ATOM(x) \
10 (((ULONG_PTR)(x) > 0x0) && ((ULONG_PTR)(x) < 0x10000))
11
12 typedef struct _WNDCLASS_OBJECT
13 {
14 UINT cbSize;
15 UINT style;
16 WNDPROC lpfnWndProcA;
17 WNDPROC lpfnWndProcW;
18 int cbClsExtra;
19 int cbWndExtra;
20 HANDLE hInstance;
21 HICON hIcon;
22 HCURSOR hCursor;
23 HBRUSH hbrBackground;
24 UNICODE_STRING lpszMenuName;
25 RTL_ATOM Atom;
26 HICON hIconSm;
27 BOOL Unicode;
28 BOOL Global;
29 LIST_ENTRY ListEntry;
30 PCHAR ExtraData;
31 /* list of windows */
32 FAST_MUTEX ClassWindowsListLock;
33 LIST_ENTRY ClassWindowsListHead;
34 } WNDCLASS_OBJECT, *PWNDCLASS_OBJECT;
35
36 NTSTATUS FASTCALL
37 InitClassImpl(VOID);
38
39 NTSTATUS FASTCALL
40 CleanupClassImpl(VOID);
41
42 #define IntLockProcessClasses(W32Process) \
43 ExAcquireFastMutex(&(W32Process)->ClassListLock)
44
45 #define IntUnLockProcessClasses(W32Process) \
46 ExReleaseFastMutex(&(W32Process)->ClassListLock)
47
48 #define IntLockClassWindows(ClassObj) \
49 ExAcquireFastMutex(&(ClassObj)->ClassWindowsListLock)
50
51 #define IntUnLockClassWindows(ClassObj) \
52 ExReleaseFastMutex(&(ClassObj)->ClassWindowsListLock)
53
54 #define ClassDereferenceObject(ClassObj) \
55 ObmDereferenceObject(ClassObj)
56
57 BOOL FASTCALL
58 ClassReferenceClassByAtom(
59 PWNDCLASS_OBJECT* Class,
60 RTL_ATOM Atom,
61 HINSTANCE hInstance);
62
63 BOOL FASTCALL
64 ClassReferenceClassByName(
65 PWNDCLASS_OBJECT *Class,
66 LPCWSTR ClassName,
67 HINSTANCE hInstance);
68
69 BOOL FASTCALL
70 ClassReferenceClassByNameOrAtom(
71 PWNDCLASS_OBJECT *Class,
72 LPCWSTR ClassNameOrAtom,
73 HINSTANCE hInstance);
74
75 struct _WINDOW_OBJECT;
76 ULONG FASTCALL
77 IntGetClassLong(struct _WINDOW_OBJECT *WindowObject, ULONG Offset, BOOL Ansi);
78
79 #endif /* _WIN32K_CLASS_H */
80
81 /* EOF */