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 static void RegisterBuiltinClass(const struct builtin_class_descr
*Descr
)
17 UNICODE_STRING ClassName
;
18 UNICODE_STRING MenuName
;
20 wc
.cbSize
= sizeof(WNDCLASSEXW
);
21 wc
.lpszClassName
= Descr
->name
;
22 wc
.lpfnWndProc
= Descr
->procW
;
23 wc
.style
= Descr
->style
;
24 wc
.hInstance
= User32Instance
;
27 wc
.hCursor
= LoadCursorW(NULL
, Descr
->cursor
);
28 wc
.hbrBackground
= Descr
->brush
;
29 wc
.lpszMenuName
= NULL
;
31 wc
.cbWndExtra
= Descr
->extra
;
34 MenuName
.MaximumLength
= 0;
35 MenuName
.Buffer
= NULL
;
37 if (IS_ATOM(Descr
->name
))
40 ClassName
.MaximumLength
= 0;
41 ClassName
.Buffer
= (LPWSTR
)Descr
->name
;
44 RtlInitUnicodeString(&ClassName
, Descr
->name
);
47 NtUserRegisterClassExWOW(
58 /***********************************************************************
61 * Register the classes for the builtin controls
64 ControlsInit(LPCWSTR ClassName
)
66 static const struct builtin_class_descr
*ClassDescriptions
[] =
68 &DIALOG_builtin_class
,
69 &POPUPMENU_builtin_class
,
71 &COMBOLBOX_builtin_class
,
73 &DESKTOP_builtin_class
,
75 &MDICLIENT_builtin_class
,
79 &SCROLL_builtin_class
,
80 &BUTTON_builtin_class
,
81 &LISTBOX_builtin_class
,
83 &ICONTITLE_builtin_class
,
90 if (IS_ATOM(ClassName
))
93 ! Register
&& i
< sizeof(ClassDescriptions
) / sizeof(ClassDescriptions
[0]);
96 if (IS_ATOM(ClassDescriptions
[i
]->name
))
98 Register
= (ClassName
== ClassDescriptions
[i
]->name
);
105 ! Register
&& i
< sizeof(ClassDescriptions
) / sizeof(ClassDescriptions
[0]);
108 if (! IS_ATOM(ClassDescriptions
[i
]->name
))
110 Register
= (0 == _wcsicmp(ClassName
, ClassDescriptions
[i
]->name
));
117 for (i
= 0; i
< sizeof(ClassDescriptions
) / sizeof(ClassDescriptions
[0]); i
++)
119 RegisterBuiltinClass(ClassDescriptions
[i
]);