[user32]
[reactos.git] / reactos / subsystems / win32 / win32k / include / window.h
1 #pragma once
2
3 struct _PROPERTY;
4 struct _WINDOW_OBJECT;
5 typedef struct _WINDOW_OBJECT *PWINDOW_OBJECT;
6
7 #include <include/object.h>
8 #include <include/class.h>
9 #include <include/msgqueue.h>
10 #include <include/winsta.h>
11 #include <include/dce.h>
12 #include <include/prop.h>
13 #include <include/scroll.h>
14
15 extern ATOM AtomMessage;
16 extern ATOM AtomWndObj; /* WNDOBJ list */
17
18 BOOL FASTCALL UserUpdateUiState(PWND Wnd, WPARAM wParam);
19
20 typedef struct _WINDOW_OBJECT
21 {
22 THRDESKHEAD head;
23 PWND Wnd;
24
25 /* Pointer to the thread information */
26 PTHREADINFO pti; // Use Wnd->head.pti
27 /* system menu handle. */
28 HMENU SystemMenu;
29 /* Handle for the window. */
30 HWND hSelf; // Use Wnd->head.h
31 /* Window flags. */
32 ULONG state;
33 /* Handle of region of the window to be updated. */
34 HANDLE hrgnUpdate;
35 /* Handle of the window region. */
36 HANDLE hrgnClip;
37 struct _WINDOW_OBJECT* spwndChild;
38 struct _WINDOW_OBJECT* spwndNext;
39 struct _WINDOW_OBJECT* spwndPrev;
40 struct _WINDOW_OBJECT* spwndParent;
41 struct _WINDOW_OBJECT* spwndOwner;
42
43 /* Scrollbar info */
44 PSBINFOEX pSBInfo; // convert to PSBINFO
45 /* Entry in the list of thread windows. */
46 LIST_ENTRY ThreadListEntry;
47 } WINDOW_OBJECT; /* PWINDOW_OBJECT already declared at top of file */
48
49 /* Window flags. */
50 #define WINDOWOBJECT_NEED_SIZE WNDS_SENDSIZEMOVEMSGS
51 #define WINDOWOBJECT_NEED_ERASEBKGND WNDS_ERASEBACKGROUND
52 #define WINDOWOBJECT_NEED_NCPAINT WNDS_SENDNCPAINT
53 #define WINDOWOBJECT_RESTOREMAX (0x00000020) // Set/Clr WS_MAXIMIZE && Clr/Set WS_EX2_VERTICALLYMAXIMIZEDLEFT/RIGHT
54
55 #define WINDOWSTATUS_DESTROYING WNDS2_INDESTROY
56 #define WINDOWSTATUS_DESTROYED WNDS_DESTROYED
57
58 #define HAS_DLGFRAME(Style, ExStyle) \
59 (((ExStyle) & WS_EX_DLGMODALFRAME) || \
60 (((Style) & WS_DLGFRAME) && (!((Style) & WS_THICKFRAME))))
61
62 #define HAS_THICKFRAME(Style, ExStyle) \
63 (((Style) & WS_THICKFRAME) && \
64 (!(((Style) & (WS_DLGFRAME | WS_BORDER)) == WS_DLGFRAME)))
65
66 #define HAS_THINFRAME(Style, ExStyle) \
67 (((Style) & WS_BORDER) || (!((Style) & (WS_CHILD | WS_POPUP))))
68
69 #define IntIsDesktopWindow(WndObj) \
70 (WndObj->spwndParent == NULL)
71
72 #define IntIsBroadcastHwnd(hWnd) \
73 (hWnd == HWND_BROADCAST || hWnd == HWND_TOPMOST)
74
75
76 #define IntWndBelongsToThread(WndObj, W32Thread) \
77 (((WndObj->pti->pEThread && WndObj->pti->pEThread->Tcb.Win32Thread)) && \
78 (WndObj->pti->pEThread->Tcb.Win32Thread == W32Thread))
79 // ((WndObj->head.pti) && (WndObj->head.pti == W32Thread))
80
81 #define IntGetWndThreadId(WndObj) \
82 WndObj->pti->pEThread->Cid.UniqueThread
83 // WndObj->head.pti->pEThread->Cid.UniqueThread
84
85 #define IntGetWndProcessId(WndObj) \
86 WndObj->pti->pEThread->ThreadsProcess->UniqueProcessId
87 // WndObj->head.pti->pEThread->ThreadsProcess->UniqueProcessId
88
89 BOOL FASTCALL
90 IntIsWindow(HWND hWnd);
91
92 HWND* FASTCALL
93 IntWinListChildren(PWINDOW_OBJECT Window);
94
95 NTSTATUS FASTCALL
96 InitWindowImpl (VOID);
97
98 NTSTATUS FASTCALL
99 CleanupWindowImpl (VOID);
100
101 VOID FASTCALL
102 IntGetClientRect (PWINDOW_OBJECT WindowObject, RECTL *Rect);
103
104 HWND FASTCALL
105 IntGetActiveWindow (VOID);
106
107 BOOL FASTCALL
108 IntIsWindowVisible (PWINDOW_OBJECT Window);
109
110 BOOL FASTCALL
111 IntIsChildWindow (PWINDOW_OBJECT Parent, PWINDOW_OBJECT Child);
112
113 VOID FASTCALL
114 IntUnlinkWindow(PWINDOW_OBJECT Wnd);
115
116 VOID FASTCALL
117 IntLinkWindow(PWINDOW_OBJECT Wnd, PWINDOW_OBJECT WndParent, PWINDOW_OBJECT WndPrevSibling);
118
119 PWINDOW_OBJECT FASTCALL
120 IntGetAncestor(PWINDOW_OBJECT Wnd, UINT Type);
121
122 PWINDOW_OBJECT FASTCALL
123 IntGetParent(PWINDOW_OBJECT Wnd);
124
125 INT FASTCALL
126 IntGetWindowRgn(PWINDOW_OBJECT Window, HRGN hRgn);
127
128 INT FASTCALL
129 IntGetWindowRgnBox(PWINDOW_OBJECT Window, RECTL *Rect);
130
131 BOOL FASTCALL
132 IntGetWindowInfo(PWINDOW_OBJECT WindowObject, PWINDOWINFO pwi);
133
134 VOID FASTCALL
135 IntGetWindowBorderMeasures(PWINDOW_OBJECT WindowObject, UINT *cx, UINT *cy);
136
137 BOOL FASTCALL
138 IntIsWindowInDestroy(PWINDOW_OBJECT Window);
139
140 BOOL FASTCALL
141 IntShowOwnedPopups( PWINDOW_OBJECT owner, BOOL fShow );
142
143 LRESULT FASTCALL
144 IntDefWindowProc( PWINDOW_OBJECT Window, UINT Msg, WPARAM wParam, LPARAM lParam, BOOL Ansi);
145
146 VOID FASTCALL IntNotifyWinEvent(DWORD, PWND, LONG, LONG);
147
148 PWND FASTCALL co_UserCreateWindowEx(CREATESTRUCTW*, PUNICODE_STRING, PLARGE_STRING);
149 WNDPROC FASTCALL IntGetWindowProc(PWND,BOOL);
150
151 /* EOF */