1 /* $Id: regcontrol.c,v 1.18 2004/03/27 10:46:32 gvg Exp $
3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS User32
5 * PURPOSE: Built-in control registration
6 * FILE: lib/user32/controls/regcontrol.c
7 * PROGRAMER: Ge van Geldorp (ge@gse.nl)
8 * REVISION HISTORY: 2003/06/16 GvG Created
9 * NOTES: Adapted from Wine
14 #include "user32/regcontrol.h"
15 #include "win32k/ntuser.h"
17 static void RegisterBuiltinClass(const struct builtin_class_descr
*Descr
)
22 wc
.cbSize
= sizeof(WNDCLASSEXW
);
23 wc
.lpszClassName
= Descr
->name
;
24 wc
.lpfnWndProc
= Descr
->procW
;
25 wc
.style
= Descr
->style
;
29 wc
.hCursor
= LoadCursorW(NULL
, Descr
->cursor
);
30 wc
.hbrBackground
= Descr
->brush
;
31 wc
.lpszMenuName
= NULL
;
33 wc
.cbWndExtra
= Descr
->extra
;
37 if(IS_ATOM(wc
.lpszClassName
))
38 DbgPrint("Registering built-in class atom=0x%x\n", wc
.lpszClassName
);
40 DbgPrint("Registering built-in class %wS\n", wc
.lpszClassName
);
42 Class
= NtUserRegisterClassExWOW(&wc
,TRUE
,Descr
->procA
,0,0);
44 DbgPrint("RegisterClassW = %d\n", Class
);
48 /***********************************************************************
51 * Register the classes for the builtin controls
54 ControlsInit(LPCWSTR ClassName
)
56 static const struct builtin_class_descr
*ClassDescriptions
[] =
58 &DIALOG_builtin_class
,
59 &POPUPMENU_builtin_class
,
61 &COMBOLBOX_builtin_class
,
63 &DESKTOP_builtin_class
,
65 &MDICLIENT_builtin_class
,
69 &SCROLL_builtin_class
,
70 &BUTTON_builtin_class
,
71 &LISTBOX_builtin_class
,
73 &ICONTITLE_builtin_class
,
80 if (IS_ATOM(ClassName
))
83 ! Register
&& i
< sizeof(ClassDescriptions
) / sizeof(ClassDescriptions
[0]);
86 if (IS_ATOM(ClassDescriptions
[i
]->name
))
88 Register
= (ClassName
== ClassDescriptions
[i
]->name
);
95 ! Register
&& i
< sizeof(ClassDescriptions
) / sizeof(ClassDescriptions
[0]);
98 if (! IS_ATOM(ClassDescriptions
[i
]->name
))
100 Register
= (0 == _wcsicmp(ClassName
, ClassDescriptions
[i
]->name
));
107 for (i
= 0; i
< sizeof(ClassDescriptions
) / sizeof(ClassDescriptions
[0]); i
++)
109 RegisterBuiltinClass(ClassDescriptions
[i
]);