2 * USER initialization code
8 #include "wine/winbase16.h"
19 #include "sysmetrics.h"
24 /***********************************************************************
25 * USER initialisation routine
27 BOOL WINAPI USER_Init(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
32 if ( USER_HeapSel ) return TRUE;
34 /* Create USER heap */
35 if ((instance = LoadLibrary16( "USER.EXE" )) < 32) return FALSE;
36 USER_HeapSel = GlobalHandleToSel16( instance );
38 /* Global atom table initialisation */
39 if (!ATOM_Init( USER_HeapSel )) return FALSE;
41 /* Initialize window handling (critical section) */
44 /* Initialize system colors and metrics*/
51 /* Initialize window procedures */
52 if (!WINPROC_Init()) return FALSE;
54 /* Initialize built-in window classes */
55 if (!WIDGETS_Init()) return FALSE;
57 /* Initialize dialog manager */
58 if (!DIALOG_Init()) return FALSE;
60 /* Initialize menus */
61 if (!MENU_Init()) return FALSE;
63 /* Initialize message spying */
64 if (!SPY_Init()) return FALSE;
66 /* Create system message queue */
67 queueSize = GetProfileIntA( "windows", "TypeAhead", 120 );
68 if (!QUEUE_CreateSysMsgQueue( queueSize )) return FALSE;
70 /* Set double click time */
71 SetDoubleClickTime( GetProfileIntA("windows","DoubleClickSpeed",452) );
73 /* Create message queue of initial thread */
74 InitThreadInput16( 0, 0 );
76 /* Create desktop window */
77 if (!WIN_CreateDesktopWindow()) return FALSE;
79 /* Initialize keyboard driver */
80 KEYBOARD_Enable( keybd_event, InputKeyStateTable );
82 /* Initialize mouse driver */
83 MOUSE_Enable( mouse_event );
85 /* Start processing X events */
86 USER_Driver->pUserRepaintDisable( FALSE );