|  | /* | 
|  | * USER initialization code | 
|  | */ | 
|  |  | 
|  | #include "windef.h" | 
|  | #include "wingdi.h" | 
|  | #include "winuser.h" | 
|  | #include "wine/winbase16.h" | 
|  |  | 
|  | #include "dce.h" | 
|  | #include "dialog.h" | 
|  | #include "global.h" | 
|  | #include "input.h" | 
|  | #include "keyboard.h" | 
|  | #include "menu.h" | 
|  | #include "message.h" | 
|  | #include "queue.h" | 
|  | #include "spy.h" | 
|  | #include "sysmetrics.h" | 
|  | #include "user.h" | 
|  | #include "win.h" | 
|  |  | 
|  |  | 
|  | /*********************************************************************** | 
|  | *           USER initialisation routine | 
|  | */ | 
|  | BOOL WINAPI USER_Init(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) | 
|  | { | 
|  | HINSTANCE16 instance; | 
|  | int queueSize; | 
|  |  | 
|  | if ( USER_HeapSel ) return TRUE; | 
|  |  | 
|  | /* Create USER heap */ | 
|  | if ((instance = LoadLibrary16( "USER.EXE" )) < 32) return FALSE; | 
|  | USER_HeapSel = GlobalHandleToSel16( instance ); | 
|  |  | 
|  | /* Global atom table initialisation */ | 
|  | if (!ATOM_Init( USER_HeapSel )) return FALSE; | 
|  |  | 
|  | /* Initialize window handling (critical section) */ | 
|  | WIN_Init(); | 
|  |  | 
|  | /* Initialize system colors and metrics*/ | 
|  | SYSMETRICS_Init(); | 
|  | SYSCOLOR_Init(); | 
|  |  | 
|  | /* Create the DCEs */ | 
|  | DCE_Init(); | 
|  |  | 
|  | /* Initialize window procedures */ | 
|  | if (!WINPROC_Init()) return FALSE; | 
|  |  | 
|  | /* Initialize built-in window classes */ | 
|  | if (!WIDGETS_Init()) return FALSE; | 
|  |  | 
|  | /* Initialize dialog manager */ | 
|  | if (!DIALOG_Init()) return FALSE; | 
|  |  | 
|  | /* Initialize menus */ | 
|  | if (!MENU_Init()) return FALSE; | 
|  |  | 
|  | /* Initialize message spying */ | 
|  | if (!SPY_Init()) return FALSE; | 
|  |  | 
|  | /* Create system message queue */ | 
|  | queueSize = GetProfileIntA( "windows", "TypeAhead", 120 ); | 
|  | if (!QUEUE_CreateSysMsgQueue( queueSize )) return FALSE; | 
|  |  | 
|  | /* Set double click time */ | 
|  | SetDoubleClickTime( GetProfileIntA("windows","DoubleClickSpeed",452) ); | 
|  |  | 
|  | /* Create message queue of initial thread */ | 
|  | InitThreadInput16( 0, 0 ); | 
|  |  | 
|  | /* Create desktop window */ | 
|  | if (!WIN_CreateDesktopWindow()) return FALSE; | 
|  |  | 
|  | /* Initialize keyboard driver */ | 
|  | KEYBOARD_Enable( keybd_event, InputKeyStateTable ); | 
|  |  | 
|  | /* Initialize mouse driver */ | 
|  | MOUSE_Enable( mouse_event ); | 
|  |  | 
|  | /* Start processing X events */ | 
|  | USER_Driver->pUserRepaintDisable( FALSE ); | 
|  |  | 
|  | return TRUE; | 
|  | } |