fix bug 838 (Sol.exe is missing it's menubar)
[reactos.git] / reactos / subsys / win32k / include / class.h
index 527b50f..e80054e 100644 (file)
@@ -1,17 +1,13 @@
 #ifndef _WIN32K_CLASS_H
 #define _WIN32K_CLASS_H
 
-#include <windows.h>
-#include <ddk/ntddk.h>
-#include <ddk/ntapi.h>
-#include <napi/win32.h>
-
 #define IS_ATOM(x) \
   (((ULONG_PTR)(x) > 0x0) && ((ULONG_PTR)(x) < 0x10000))
 
 typedef struct _WNDCLASS_OBJECT
 {
   UINT    cbSize;
+  LONG    refs;                  /* windows using this class (is 0 after class creation) */
   UINT    style;
   WNDPROC lpfnWndProcA;
   WNDPROC lpfnWndProcW;
@@ -21,16 +17,14 @@ typedef struct _WNDCLASS_OBJECT
   HICON   hIcon;
   HCURSOR hCursor;
   HBRUSH  hbrBackground;
+  HMENU   hMenu;
   UNICODE_STRING lpszMenuName;
   RTL_ATOM Atom;
   HICON   hIconSm;
   BOOL Unicode;
   BOOL Global;
-  LIST_ENTRY ListEntry;
+  LIST_ENTRY ListEntry;          /* linked into owning process */
   PCHAR   ExtraData;
-  /* list of windows */
-  FAST_MUTEX ClassWindowsListLock;
-  LIST_ENTRY ClassWindowsListHead;
 } WNDCLASS_OBJECT, *PWNDCLASS_OBJECT;
 
 NTSTATUS FASTCALL
@@ -39,36 +33,26 @@ InitClassImpl(VOID);
 NTSTATUS FASTCALL
 CleanupClassImpl(VOID);
 
-#define IntLockProcessClasses(W32Process) \
-  ExAcquireFastMutex(&(W32Process)->ClassListLock)
-
-#define IntUnLockProcessClasses(W32Process) \
-  ExReleaseFastMutex(&(W32Process)->ClassListLock)
-
-#define IntLockClassWindows(ClassObj) \
-  ExAcquireFastMutex(&(ClassObj)->ClassWindowsListLock)
+void FASTCALL DestroyProcessClasses(PW32PROCESS Process );
 
-#define IntUnLockClassWindows(ClassObj) \
-  ExReleaseFastMutex(&(ClassObj)->ClassWindowsListLock)
+inline VOID FASTCALL 
+ClassDerefObject(PWNDCLASS_OBJECT Class);
 
-#define ClassDereferenceObject(ClassObj) \
-  ObmDereferenceObject(ClassObj)
+inline VOID FASTCALL 
+ClassRefObject(PWNDCLASS_OBJECT Class);
 
-BOOL FASTCALL
-ClassReferenceClassByAtom(
-   PWNDCLASS_OBJECT* Class,
+PWNDCLASS_OBJECT FASTCALL
+ClassGetClassByAtom(
    RTL_ATOM Atom,
    HINSTANCE hInstance);
 
-BOOL FASTCALL
-ClassReferenceClassByName(
-   PWNDCLASS_OBJECT *Class,
+PWNDCLASS_OBJECT FASTCALL
+ClassGetClassByName(
    LPCWSTR ClassName,
    HINSTANCE hInstance);
 
-BOOL FASTCALL
-ClassReferenceClassByNameOrAtom(
-   PWNDCLASS_OBJECT *Class,
+PWNDCLASS_OBJECT FASTCALL
+ClassGetClassByNameOrAtom(
    LPCWSTR ClassNameOrAtom,
    HINSTANCE hInstance);