1 #ifndef __WIN32K_WINDOW_H
2 #define __WIN32K_WINDOW_H
9 #include <include/class.h>
10 #include <include/msgqueue.h>
11 #include <include/winsta.h>
12 #include <include/dce.h>
13 #include <include/prop.h>
15 typedef struct _PROPERTY
17 LIST_ENTRY PropListEntry;
20 } PROPERTY, *PPROPERTY;
23 WinPosSetupInternalPos(VOID);
25 typedef struct _WINDOW_OBJECT
27 /* Pointer to the window class. */
28 PWNDCLASS_OBJECT Class;
32 UNICODE_STRING WindowName;
35 /* Initial window position. */
42 /* Parent window handle. */
44 /* system menu handle. */
46 /* Handle of the module that created the window. */
50 /* Entry in the thread's list of windows. */
52 /* Pointer to the extra data associated with the window. */
54 /* Size of the extra data associated with the window. */
56 /* Position of the window. */
58 /* Position of the window's client area. */
60 /* Handle for the window. */
64 /* Window menu handle or window id */
66 /* Handle of region of the window to be updated. */
68 /* Pointer to the owning thread's message queue. */
69 PUSER_MESSAGE_QUEUE MessageQueue;
70 struct _WINDOW_OBJECT* FirstChild;
71 struct _WINDOW_OBJECT* LastChild;
72 /* Lock for the list of child windows. */
73 FAST_MUTEX ChildrenListLock;
74 struct _WINDOW_OBJECT* NextSibling;
75 struct _WINDOW_OBJECT* PrevSibling;
76 /* Entry in the list of thread windows. */
77 LIST_ENTRY ThreadListEntry;
78 /* Pointer to the parent window. */
79 struct _WINDOW_OBJECT* Parent;
80 /* DC Entries (DCE) */
82 /* Property list head.*/
83 LIST_ENTRY PropListHead;
85 PSCROLLBARINFO pHScroll;
86 PSCROLLBARINFO pVScroll;
87 PSCROLLBARINFO wExtra;
93 HWND hWndOwner; /* handle to the owner window (wine doesn't use pointer, for unk. reason)*/
94 HWND hWndLastPopup; /* handle to last active popup window (wine doesn't use pointer, for unk. reason)*/
95 } WINDOW_OBJECT, *PWINDOW_OBJECT;
98 #define WINDOWOBJECT_NEED_SIZE (0x00000001)
99 /* Not used anymore: define WINDOWOBJECT_NEED_BEGINPAINT (0x00000002) */
100 #define WINDOWOBJECT_NEED_ERASEBACKGRD (0x00000004)
101 #define WINDOWOBJECT_NEED_NCPAINT (0x00000008)
102 #define WINDOWOBJECT_NEED_INTERNALPAINT (0x00000010)
103 #define WINDOWOBJECT_RESTOREMAX (0x00000020)
105 inline BOOL IntIsDesktopWindow(PWINDOW_OBJECT WindowObject);
107 inline BOOL IntIsBroadcastHwnd( HWND hwnd );
110 IntWndBelongsToThread(PWINDOW_OBJECT Window, PW32THREAD ThreadData);
113 InitWindowImpl (VOID);
116 CleanupWindowImpl (VOID);
119 IntGetClientRect (PWINDOW_OBJECT WindowObject, PRECT Rect);
121 PWINDOW_OBJECT FASTCALL
122 IntGetWindowObject (HWND hWnd);
125 IntReleaseWindowObject (PWINDOW_OBJECT Window);
128 IntCreateDesktopWindow (PWINSTATION_OBJECT WindowStation,
129 PWNDCLASS_OBJECT DesktopClass,
130 ULONG Width, ULONG Height);
133 IntGetActiveWindow (VOID);
136 IntIsWindowVisible (HWND Wnd);
139 IntIsChildWindow (HWND Parent, HWND Child);
142 IntGetDesktopWindow (VOID);
145 IntGetFocusWindow (VOID);
148 IntSetFocusWindow (HWND hWnd);
151 IntSetProp(PWINDOW_OBJECT Wnd, ATOM Atom, HANDLE Data);
154 IntGetProp(PWINDOW_OBJECT WindowObject, ATOM Atom);
157 IntGetWindowThreadProcessId(PWINDOW_OBJECT Wnd, PDWORD pid);
160 IntUnlinkWindow(PWINDOW_OBJECT Wnd);
163 UserHasDlgFrameStyle(ULONG Style, ULONG ExStyle);
166 UserHasThickFrameStyle(ULONG Style, ULONG ExStyle);
168 PWINDOW_OBJECT FASTCALL
169 IntGetAncestor(PWINDOW_OBJECT Wnd, UINT Type);
171 PWINDOW_OBJECT FASTCALL
172 IntGetParent(PWINDOW_OBJECT Wnd);
174 typedef enum _WINLOCK_TYPE
182 #define ASSERT_WINLOCK(a) assert(IntVerifyWinLock(a))
184 inline VOID IntAcquireWinLockShared();
185 inline VOID IntAcquireWinLockExclusive();
186 inline VOID IntReleaseWinLock();
187 BOOL FASTCALL IntVerifyWinLock(WINLOCK_TYPE Type);
188 WINLOCK_TYPE FASTCALL IntSuspendWinLock();
189 VOID FASTCALL IntRestoreWinLock(WINLOCK_TYPE Type);
190 inline BOOL IntInitializeWinLock();
191 inline VOID IntDeleteWinLock();
193 #endif /* __WIN32K_WINDOW_H */