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 <wine/debug.h>
18 const struct builtin_class_descr
*desc
;
22 { &DIALOG_builtin_class
, FNID_DIALOG
},
23 { &POPUPMENU_builtin_class
, FNID_MENU
},
24 { &COMBO_builtin_class
, FNID_COMBOBOX
},
25 { &COMBOLBOX_builtin_class
, FNID_COMBOLBOX
},
26 { &MDICLIENT_builtin_class
, FNID_MDICLIENT
},
28 { &MENU_builtin_class
, FNID_MENU
},
30 { &SCROLL_builtin_class
, FNID_SCROLLBAR
},
31 { &BUTTON_builtin_class
, FNID_BUTTON
},
32 { &LISTBOX_builtin_class
, FNID_LISTBOX
},
33 { &EDIT_builtin_class
, FNID_EDIT
},
34 { &ICONTITLE_builtin_class
, FNID_ICONTITLE
},
35 { &STATIC_builtin_class
, FNID_STATIC
},
38 BOOL WINAPI
RegisterSystemControls(VOID
)
40 REGISTER_SYSCLASS cls
[sizeof(g_SysClasses
) / sizeof(g_SysClasses
[0])];
43 ZeroMemory(cls
, sizeof(cls
));
45 for (i
= 0; i
!= sizeof(cls
) / sizeof(cls
[0]); i
++)
47 if (IS_ATOM(g_SysClasses
[i
].desc
->name
))
48 cls
[i
].ClassName
.Buffer
= (PWSTR
)((ULONG_PTR
)g_SysClasses
[i
].desc
->name
);
50 RtlInitUnicodeString(&cls
[i
].ClassName
, g_SysClasses
[i
].desc
->name
);
52 cls
[i
].Style
= g_SysClasses
[i
].desc
->style
;
53 cls
[i
].ProcW
= g_SysClasses
[i
].desc
->procW
;
54 cls
[i
].ProcA
= g_SysClasses
[i
].desc
->procA
;
55 cls
[i
].ExtraBytes
= g_SysClasses
[i
].desc
->extra
;
56 cls
[i
].hCursor
= LoadCursorW(NULL
, g_SysClasses
[i
].desc
->cursor
);
57 cls
[i
].hBrush
= g_SysClasses
[i
].desc
->brush
;
58 cls
[i
].ClassId
= g_SysClasses
[i
].ClsId
;
61 return NtUserRegisterSystemClasses(sizeof(cls
) / sizeof(cls
[0]), cls
);
66 static PFNCLIENT pfnClientA
;
67 static PFNCLIENT pfnClientW
;
68 static PFNCLIENTWORKER pfnClientWorker
;
70 BOOL WINAPI
RegisterClientPFN(VOID
)
74 // pfnClientA.pfnScrollBarWndProc = ScrollBarWndProcA;
75 // pfnClientW.pfnScrollBarWndProc = ScrollBarWndProcW;
76 // pfnClientA.pfnTitleWndProc = IconTitleWndProc;
77 // pfnClientW.pfnTitleWndProc = IconTitleWndProc;
78 // pfnClientA.pfnMenuWndProc = PopupMenuWndProcA;
79 // pfnClientW.pfnMenuWndProc = PopupMenuWndProcW;
80 pfnClientA
.pfnDesktopWndProc
= DesktopWndProc
; // Fixme!
81 pfnClientW
.pfnDesktopWndProc
= DesktopWndProc
;
82 pfnClientA
.pfnDefWindowProc
= DefWindowProcA
;
83 pfnClientW
.pfnDefWindowProc
= DefWindowProcW
;
84 pfnClientA
.pfnMessageWindowProc
= DefWindowProcA
;
85 pfnClientW
.pfnMessageWindowProc
= DefWindowProcW
;
86 pfnClientA
.pfnSwitchWindowProc
= DefWindowProcA
;
87 pfnClientW
.pfnSwitchWindowProc
= DefWindowProcW
;
88 // pfnClientA.pfnButtonWndProc = ButtonWndProcA;
89 // pfnClientW.pfnButtonWndProc = ButtonWndProcW
90 // pfnClientA.pfnComboBoxWndProc = ComboWndProcA;
91 // pfnClientW.pfnComboBoxWndProc = ComboWndProcW;
92 // pfnClientA.pfnComboListBoxProc = ListBoxWndProcA;
93 // pfnClientW.pfnComboListBoxProc = ListBoxWndProcW;
94 // pfnClientA.pfnDialogWndProc = DefDlgProcA;
95 // pfnClientW.pfnDialogWndProc = DefDlgProcW;
96 // pfnClientA.pfnEditWndProc = EditWndProcA;
97 // pfnClientW.pfnEditWndProc = EditWndProcW;
98 // pfnClientA.pfnListBoxWndProc = ListBoxWndProcA;
99 // pfnClientW.pfnListBoxWndProc = ListBoxWndProcW;
100 // pfnClientA.pfnMDIClientWndProc = MDIClientWndProcA;
101 // pfnClientW.pfnMDIClientWndProc = MDIClientWndProcW;
102 // pfnClientA.pfnStaticWndProc = StaticWndProcA;
103 // pfnClientW.pfnStaticWndProc = StaticWndProcW;
104 pfnClientA
.pfnImeWndProc
= DefWindowProcA
;
105 pfnClientW
.pfnImeWndProc
= DefWindowProcW
;
106 pfnClientA
.pfnGhostWndProc
= DefWindowProcA
;
107 pfnClientW
.pfnGhostWndProc
= DefWindowProcW
;
108 pfnClientA
.pfnHkINLPCWPSTRUCT
= DefWindowProcA
;
109 pfnClientW
.pfnHkINLPCWPSTRUCT
= DefWindowProcW
;
110 pfnClientA
.pfnHkINLPCWPRETSTRUCT
= DefWindowProcA
;
111 pfnClientW
.pfnHkINLPCWPRETSTRUCT
= DefWindowProcW
;
112 pfnClientA
.pfnDispatchHook
= DefWindowProcA
;
113 pfnClientW
.pfnDispatchHook
= DefWindowProcW
;
114 pfnClientA
.pfnDispatchDefWindowProc
= DefWindowProcA
;
115 pfnClientW
.pfnDispatchDefWindowProc
= DefWindowProcW
;
116 pfnClientA
.pfnDispatchMessage
= DefWindowProcA
;
117 pfnClientW
.pfnDispatchMessage
= DefWindowProcW
;
118 pfnClientA
.pfnMDIActivateDlgProc
= DefWindowProcA
;
119 pfnClientW
.pfnMDIActivateDlgProc
= DefWindowProcW
;
121 // pfnClientWorker.pfnButtonWndProc = ButtonWndProc_common;
122 // pfnClientWorker.pfnComboBoxWndProc = ComboWndProc_common;
123 // pfnClientWorker.pfnComboListBoxProc = ListBoxWndProc_common;
124 //// pfnClientWorker.pfnDialogWndProc = DefDlgProc_common;
125 // pfnClientWorker.pfnEditWndProc = EditWndProc_common;
126 // pfnClientWorker.pfnListBoxWndProc = ListBoxWndProc_common;
127 // pfnClientWorker.pfnMDIClientWndProc = MDIClientWndProc_common;
128 // pfnClientWorker.pfnStaticWndProc = StaticWndProc_common;
129 pfnClientWorker
.pfnImeWndProc
= User32DefWindowProc
;
130 pfnClientWorker
.pfnGhostWndProc
= User32DefWindowProc
;
131 pfnClientWorker
.pfnCtfHookProc
= User32DefWindowProc
;
133 Status
= NtUserInitializeClientPfnArrays( &pfnClientA
,
138 return NT_SUCCESS(Status
) ? TRUE
: FALSE
;