1 #pragma once
2
3 // Win: ValidateHmenu
UserGetMenuObject(HMENU hMenu)4 FORCEINLINE PMENU UserGetMenuObject(HMENU hMenu)
5 {
6 PMENU pMenu = UserGetObject(gHandleTable, hMenu, TYPE_MENU);
7 if (!pMenu)
8 {
9 EngSetLastError(ERROR_INVALID_MENU_HANDLE);
10 }
11 return pMenu;
12 }
13
14 #define ASSERT_REFS_CO(_obj_) \
15 { \
16 LONG ref = ((PHEAD)_obj_)->cLockObj;\
17 if (!(ref >= 1)){ \
18 ERR_CH(UserObj, "ASSERT: obj 0x%p, refs %ld\n", _obj_, ref); \
19 ASSERT(FALSE); \
20 } \
21 }
22
23 #if 0
24 #define ASSERT_REFS_CO(_obj_) \
25 { \
26 PSINGLE_LIST_ENTRY e; \
27 BOOL gotit=FALSE; \
28 LONG ref = ((PHEAD)_obj_)->cLockObj;\
29 if (!(ref >= 1)){ \
30 ERR_CH(UserObj, "obj 0x%p, refs %i\n", _obj_, ref); \
31 ASSERT(FALSE); \
32 } \
33 \
34 e = PsGetCurrentThreadWin32Thread()->ReferencesList.Next; \
35 while (e) \
36 { \
37 PUSER_REFERENCE_ENTRY ref = CONTAINING_RECORD(e, USER_REFERENCE_ENTRY, Entry); \
38 if (ref->obj == _obj_){ gotit=TRUE; break; } \
39 e = e->Next; \
40 } \
41 ASSERT(gotit); \
42 }
43 #endif
44
45 #define DUMP_REFS(obj) TRACE_CH(UserObj,"obj 0x%x, refs %i\n",obj, ((PHEAD)obj)->cLockObj)
46
47 PWND FASTCALL IntGetWindowObject(HWND hWnd);
48
49 /*************** DDE.C ****************/
50
51 BOOL FASTCALL IntDdeSendMessageHook(PWND,UINT,WPARAM,LPARAM);
52 BOOL APIENTRY IntDdePostMessageHook(IN PWND,IN UINT,IN WPARAM,IN OUT LPARAM*,IN OUT LONG_PTR*);
53 BOOL APIENTRY IntDdeGetMessageHook(PMSG,LONG_PTR);
54
55 /*************** MAIN.C ***************/
56
57 NTSTATUS NTAPI InitThreadCallback(PETHREAD Thread);
58
59 /*************** WINSTA.C ***************/
60
61 HWINSTA FASTCALL UserGetProcessWindowStation(VOID);
62
63 /*************** FOCUS.C ***************/
64
65 HWND FASTCALL UserGetActiveWindow(VOID);
66
67 HWND FASTCALL UserGetForegroundWindow(VOID);
68
69 HWND FASTCALL co_UserSetFocus(PWND Window);
70
71 /*************** WINDC.C ***************/
72
73 INT FASTCALL UserReleaseDC(PWND Window, HDC hDc, BOOL EndPaint);
74 HDC FASTCALL UserGetDCEx(PWND Window OPTIONAL, HANDLE ClipRegion, ULONG Flags);
75 HDC FASTCALL UserGetWindowDC(PWND Wnd);
76
77 /*************** SESSION.C ***************/
78
79 extern PRTL_ATOM_TABLE gAtomTable;
80 NTSTATUS FASTCALL InitSessionImpl(VOID);
81
82 /*************** METRIC.C ***************/
83
84 BOOL NTAPI InitMetrics(VOID);
85 LONG NTAPI UserGetSystemMetrics(ULONG Index);
86 BOOL FASTCALL UserIsDBCSEnabled(VOID);
87 BOOL FASTCALL UserIsIMMEnabled(VOID);
88 BOOL FASTCALL UserIsCiceroEnabled(VOID);
89
90 /*************** KEYBOARD.C ***************/
91
92 DWORD FASTCALL UserGetKeyState(DWORD key);
93 DWORD FASTCALL UserGetKeyboardType(DWORD TypeFlag);
94 HKL FASTCALL UserGetKeyboardLayout(DWORD dwThreadId);
95
96
97 /*************** MISC.C ***************/
98
99 int
100 __cdecl
101 _scwprintf(
102 const wchar_t *format,
103 ...);
104
105 BOOL FASTCALL
106 UserSystemParametersInfo(
107 UINT uiAction,
108 UINT uiParam,
109 PVOID pvParam,
110 UINT fWinIni);
111
112 VOID FASTCALL IntSetWindowState(PWND, UINT);
113 VOID FASTCALL IntClearWindowState(PWND, UINT);
114 PTHREADINFO FASTCALL IntTID2PTI(HANDLE);
115 HBRUSH FASTCALL GetControlBrush(PWND,HDC,UINT);
116 HBRUSH FASTCALL GetControlColor(PWND,PWND,HDC,UINT);
117
118 NTSTATUS
119 GetProcessLuid(
120 IN PETHREAD Thread OPTIONAL,
121 IN PEPROCESS Process OPTIONAL,
122 OUT PLUID Luid);
123
124 /*************** MESSAGE.C ***************/
125
126 BOOL FASTCALL UserPostMessage(HWND Wnd,UINT Msg, WPARAM wParam, LPARAM lParam);
127
128 /*************** WINDOW.C ***************/
129
130 PWND FASTCALL UserGetWindowObject(HWND hWnd);
131 VOID FASTCALL co_DestroyThreadWindows(struct _ETHREAD *Thread);
132 HWND FASTCALL UserGetShellWindow(VOID);
133 HDC FASTCALL UserGetDCEx(PWND Window OPTIONAL, HANDLE ClipRegion, ULONG Flags);
134 BOOLEAN co_UserDestroyWindow(PVOID Object);
135 PWND FASTCALL UserGetAncestor(PWND Wnd, UINT Type);
136 BOOL APIENTRY DefSetText(PWND Wnd, PCWSTR WindowText);
137 DWORD FASTCALL IntGetWindowContextHelpId( PWND pWnd );
138
139 /*************** MENU.C ***************/
140
141 HMENU FASTCALL UserCreateMenu(PDESKTOP Desktop, BOOL PopupMenu);
142 BOOL FASTCALL UserSetMenuDefaultItem(PMENU Menu, UINT uItem, UINT fByPos);
143 BOOL FASTCALL UserDestroyMenu(HMENU hMenu);
144
145 /************** NONCLIENT **************/
146
147 VOID FASTCALL DefWndDoSizeMove(PWND pwnd, WORD wParam);
148 LRESULT NC_DoNCPaint(PWND,HDC,INT);
149 void FASTCALL NC_GetSysPopupPos(PWND, RECT *);
150 LRESULT NC_HandleNCActivate( PWND Wnd, WPARAM wParam, LPARAM lParam );
151 LRESULT NC_HandleNCCalcSize( PWND wnd, WPARAM wparam, RECTL *winRect, BOOL Suspended );
152 VOID NC_DrawFrame( HDC hDC, RECT *CurrentRect, BOOL Active, DWORD Style, DWORD ExStyle);
153 VOID UserDrawCaptionBar( PWND pWnd, HDC hDC, INT Flags);
154 void FASTCALL NC_GetInsideRect(PWND Wnd, RECT *rect);
155 LRESULT NC_HandleNCLButtonDown(PWND Wnd, WPARAM wParam, LPARAM lParam);
156 LRESULT NC_HandleNCLButtonDblClk(PWND Wnd, WPARAM wParam, LPARAM lParam);
157 LRESULT NC_HandleNCRButtonDown( PWND wnd, WPARAM wParam, LPARAM lParam );
158
159 /************** DEFWND **************/
160
161 HBRUSH FASTCALL DefWndControlColor(HDC hDC,UINT ctlType);
162 BOOL UserDrawSysMenuButton(PWND pWnd, HDC hDC, LPRECT Rect, BOOL Down);
163 BOOL UserPaintCaption(PWND pWnd, INT Flags);
164
165 /************** LAYERED **************/
166
167 BOOL FASTCALL SetLayeredStatus(PWND pWnd, BYTE set);
168 BOOL FASTCALL GetLayeredStatus(PWND pWnd);
169
170 /************** INPUT CONTEXT **************/
171
172 PIMC FASTCALL UserCreateInputContext(ULONG_PTR dwClientImcData);
173 VOID UserFreeInputContext(PVOID Object);
174 BOOLEAN UserDestroyInputContext(PVOID Object);
175 PVOID AllocInputContextObject(PDESKTOP pDesk, PTHREADINFO pti, SIZE_T Size, PVOID* HandleOwner);
176
177 /* EOF */
178