:pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
[reactos.git] / lib / user32 / windows / class.c
1 /* $Id$
2  *
3  * COPYRIGHT:       See COPYING in the top level directory
4  * PROJECT:         ReactOS user32.dll
5  * FILE:            lib/user32/windows/class.c
6  * PURPOSE:         Window classes
7  * PROGRAMMER:      Casper S. Hornstrup (chorns@users.sourceforge.net)
8  * UPDATE HISTORY:
9  *      09-05-2001  CSH  Created
10  */
11 #include <windows.h>
12 #include <user32.h>
13 #include <debug.h>
14
15
16 WINBOOL
17 STDCALL
18 GetClassInfoA(
19   HINSTANCE hInstance,
20   LPCSTR lpClassName,
21   LPWNDCLASS lpWndClass)
22 {
23   return FALSE;
24 }
25
26 WINBOOL
27 STDCALL
28 GetClassInfoExA(
29   HINSTANCE hinst,
30   LPCSTR lpszClass,
31   LPWNDCLASSEX lpwcx)
32 {
33   return FALSE;
34 }
35
36 WINBOOL
37 STDCALL
38 GetClassInfoExW(
39   HINSTANCE hinst,
40   LPCWSTR lpszClass,
41   LPWNDCLASSEX lpwcx)
42 {
43   return FALSE;
44 }
45
46 WINBOOL
47 STDCALL
48 GetClassInfoW(
49   HINSTANCE hInstance,
50   LPCWSTR lpClassName,
51   LPWNDCLASS lpWndClass)
52 {
53   return FALSE;
54 }
55
56 DWORD STDCALL
57 GetClassLongA(HWND hWnd, int nIndex)
58 {
59   switch (nIndex)
60     {
61     case GCL_WNDPROC:
62       UNIMPLEMENTED;
63       return(0);
64     case GCL_MENUNAME:
65       UNIMPLEMENTED;
66       return(0);
67     default:
68       return(GetClassLongW(hWnd, nIndex));
69     }
70 }
71
72 DWORD STDCALL
73 GetClassLongW(HWND hWnd, int nIndex)
74 {
75   return(NtUserGetClassLong(hWnd, nIndex));
76 }
77
78 int
79 STDCALL
80 GetClassNameA(
81   HWND hWnd,
82   LPSTR lpClassName,
83   int nMaxCount)
84 {
85   return 0;
86 }
87
88 int
89 STDCALL
90 GetClassNameW(
91   HWND hWnd,
92   LPWSTR lpClassName,
93   int nMaxCount)
94 {
95   return 0;
96 }
97
98 WORD
99 STDCALL
100 GetClassWord(
101   HWND hWnd,
102   int nIndex)
103 /*
104  * NOTE: Obsoleted in 32-bit windows
105  */
106 {
107   return 0;
108 }
109
110 LONG STDCALL
111 GetWindowLongA(HWND hWnd, int nIndex)
112 {
113   return 0;
114 }
115
116 LONG STDCALL
117 GetWindowLongW(HWND hWnd, int nIndex)
118 {
119   return(NtUserGetWindowLong(hWnd, nIndex));
120 }
121
122 UINT
123 STDCALL
124 RealGetWindowClass(
125   HWND  hwnd,
126   LPSTR pszType,
127   UINT  cchType)
128 {
129   return 0;
130 }
131
132 UINT
133 STDCALL
134 RealGetWindowClassA(
135   HWND  hwnd,
136   LPSTR pszType,
137   UINT  cchType)
138 {
139   return 0;
140 }
141
142 UINT
143 STDCALL
144 RealGetWindowClassW(
145   HWND  hwnd,
146   LPWSTR pszType,
147   UINT  cchType)
148 {
149   return 0;
150 }
151
152 ATOM STDCALL
153 RegisterClassA(CONST WNDCLASS *lpWndClass)
154 {
155   WNDCLASSEX Class;
156
157   RtlMoveMemory(&Class.style, lpWndClass, sizeof(WNDCLASS));
158   Class.cbSize = sizeof(WNDCLASSEX);
159   Class.hIconSm = INVALID_HANDLE_VALUE;
160   return RegisterClassExA(&Class);
161 }
162
163 ATOM STDCALL
164 RegisterClassExA(CONST WNDCLASSEX *lpwcx)
165 {
166   UNICODE_STRING MenuName;
167   UNICODE_STRING ClassName;
168   WNDCLASSEX Class;
169   RTL_ATOM Atom;
170
171   if (!RtlCreateUnicodeStringFromAsciiz(&MenuName, (PCSZ)lpwcx->lpszMenuName))
172   {
173     RtlFreeUnicodeString(&MenuName);
174     SetLastError(ERROR_NOT_ENOUGH_MEMORY);
175     return (ATOM)0;
176   }
177   
178   if (!RtlCreateUnicodeStringFromAsciiz(&ClassName, (PCSZ)lpwcx->lpszClassName))
179     {
180       RtlFreeUnicodeString(&ClassName);
181       SetLastError(ERROR_NOT_ENOUGH_MEMORY);
182       return (ATOM)0;
183     }
184   
185   RtlMoveMemory(&Class, lpwcx, sizeof(WNDCLASSEX));
186   Class.lpszMenuName = (LPCTSTR)MenuName.Buffer;
187   Class.lpszClassName = (LPCTSTR)ClassName.Buffer;
188
189   Atom = NtUserRegisterClassExWOW(&Class,
190                                   FALSE,
191                                   0,
192                                   0,
193                                   0,
194                                   0);
195   
196   RtlFreeUnicodeString(&ClassName);
197   RtlFreeUnicodeString(&MenuName);
198   
199   return (ATOM)Atom;
200 }
201
202 ATOM STDCALL
203 RegisterClassExW(CONST WNDCLASSEX *lpwcx)
204 {
205   RTL_ATOM Atom;
206
207   Atom = NtUserRegisterClassExWOW((WNDCLASSEX*)lpwcx,
208                                   TRUE,
209                                   0,
210                                   0,
211                                   0,
212                                   0);
213   
214   return (ATOM)Atom;
215 }
216
217 ATOM STDCALL
218 RegisterClassW(CONST WNDCLASS *lpWndClass)
219 {
220   WNDCLASSEX Class;
221
222   RtlMoveMemory(&Class.style, lpWndClass, sizeof(WNDCLASS));
223   Class.cbSize = sizeof(WNDCLASSEX);
224   Class.hIconSm = INVALID_HANDLE_VALUE;
225   return RegisterClassExW(&Class);
226 }
227
228 DWORD
229 STDCALL
230 SetClassLongA(
231   HWND hWnd,
232   int nIndex,
233   LONG dwNewLong)
234 {
235   return 0;
236 }
237
238 DWORD
239 STDCALL
240 SetClassLongW(
241   HWND hWnd,
242   int nIndex,
243   LONG dwNewLong)
244 {
245   return 0;
246 }
247
248 WORD
249 STDCALL
250 SetClassWord(
251   HWND hWnd,
252   int nIndex,
253   WORD wNewWord)
254 /*
255  * NOTE: Obsoleted in 32-bit windows
256  */
257 {
258   return 0;
259 }
260
261 LONG
262 STDCALL
263 SetWindowLongA(
264   HWND hWnd,
265   int nIndex,
266   LONG dwNewLong)
267 {
268   return 0;
269 }
270
271 LONG
272 STDCALL
273 SetWindowLongW(
274   HWND hWnd,
275   int nIndex,
276   LONG dwNewLong)
277 {
278   return 0;
279 }
280
281 WINBOOL
282 STDCALL
283 UnregisterClassA(
284   LPCSTR lpClassName,
285   HINSTANCE hInstance)
286 {
287   return FALSE;
288 }
289
290 WINBOOL
291 STDCALL
292 UnregisterClassW(
293   LPCWSTR lpClassName,
294   HINSTANCE hInstance)
295 {
296   return FALSE;
297 }
298
299 /* EOF */