283575aecea9f4d561a5165c9b2fcd33aeeaca4a
[reactos.git] / reactos / subsys / win32k / include / window.h
1 #ifndef __WIN32K_WINDOW_H
2 #define __WIN32K_WINDOW_H
3
4 #include <windows.h>
5 #include <ddk/ntddk.h>
6 #include <include/class.h>
7 #include <include/msgqueue.h>
8
9 typedef struct _INTERNALPOS
10 {
11 RECT NormalRect;
12 POINT IconPos;
13 POINT MaxPos;
14 HWND IconTitle;
15 } INTERNALPOS, *PINTERNALPOS;
16
17 typedef struct _WINDOW_OBJECT
18 {
19 /* Internal position. */
20 PINTERNALPOS InternalPos;
21 /* Pointer to the window class. */
22 PWNDCLASS_OBJECT Class;
23 /* Extended style. */
24 DWORD ExStyle;
25 /* Window name. */
26 UNICODE_STRING WindowName;
27 /* Style. */
28 DWORD Style;
29 /* Initial window position. */
30 INT x;
31 INT y;
32 INT Width;
33 INT Height;
34 /* Parent window handle. */
35 HWND ParentHandle;
36 /* Window menu handle. */
37 HMENU Menu;
38 /* Handle of the module that created the window. */
39 HINSTANCE Instance;
40 /* Unknown. */
41 LPVOID Parameters;
42 /* Entry in the thread's list of windows. */
43 LIST_ENTRY ListEntry;
44 /* Entry in the global list of windows. */
45 LIST_ENTRY DesktopListEntry;
46 /* Pointer to the extra data associated with the window. */
47 PULONG ExtraData;
48 /* Size of the extra data associated with the window. */
49 ULONG ExtraDataSize;
50 /* Position of the window. */
51 RECT WindowRect;
52 /* Position of the window's client area. */
53 RECT ClientRect;
54 /* Handle for the window. */
55 HANDLE Self;
56 /* Window flags. */
57 ULONG Flags;
58 /* FIXME: Don't know. */
59 UINT IDMenu;
60 /* Handle of region of the window to be updated. */
61 HANDLE UpdateRegion;
62 /* Pointer to the message queue associated with the window. */
63 PUSER_MESSAGE_QUEUE MessageQueue;
64 /* Head of the list of child windows. */
65 LIST_ENTRY ChildrenListHead;
66 /* Lock for the list of child windows. */
67 FAST_MUTEX ChildrenListLock;
68 /* Entry in the parent's list of child windows. */
69 LIST_ENTRY SiblingListEntry;
70 /* Entry in the list of thread windows. */
71 LIST_ENTRY ThreadListEntry;
72 /* Pointer to the parent window. */
73 struct _WINDOW_OBJECT* Parent;
74 } WINDOW_OBJECT, *PWINDOW_OBJECT;
75
76 /* Window flags. */
77 #define WINDOWOBJECT_NEED_SIZE (0x00000001)
78 #define WINDOWOBJECT_NEED_BEGINPAINT (0x00000002)
79 #define WINDOWOBJECT_NEED_ERASEBACKGRD (0x00000004)
80 #define WINDOWOBJECT_NEED_NCPAINT (0x00000008)
81 #define WINDOWOBJECT_NEED_INTERNALPAINT (0x00000010)
82 #define WINDOWOBJECT_RESTOREMAX (0x00000020)
83
84 NTSTATUS
85 InitWindowImpl(VOID);
86 NTSTATUS
87 CleanupWindowImpl(VOID);
88 VOID
89 W32kGetClientRect(PWINDOW_OBJECT WindowObject, PRECT Rect);
90 PWINDOW_OBJECT
91 W32kGetWindowObject(HWND hWnd);
92 VOID
93 W32kReleaseWindowObject(PWINDOW_OBJECT Window);
94
95 #endif /* __WIN32K_WINDOW_H */
96
97 /* EOF */