/*---------------------------------------------------------------------------- | | main.c | ---------------------------------------------------------------------------*/ #include "precomp.h" #include "demo.h" #include "resource.h" // Internal functions static L_BOOL RegisterAllWindows( L_BOOL ); static L_BOOL CreateFrameWindow( L_VOID ); /*---------------------------------------------------------------------------- | | WinMain | ---------------------------------------------------------------------------*/ L_INT EXT_FUNCTION WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance, L_CHAR *pCmdLine, L_INT nCmdShow ) { HACCEL hAccelFrame; HACCEL hAccelChild; MSG Msg; UNREFERENCED_PARAMETER( hPrevInstance ); UNREFERENCED_PARAMETER( pCmdLine ); g_hInstance = hInstance; UNLOCKSUPPORT(); if( L_IsSupportLocked( L_SUPPORT_VECTOR ) ) { MessageBox( NULL, TEXT("Vector support is locked!"), TEXT("Error"), MB_ICONSTOP ); return 1; } if( !RegisterAllWindows( TRUE ) ) { ShowMessageBox( TRUE, MB_ICONSTOP, NULL ); return 1; } g_hMenuFrame = LoadMenu( g_hInstance, MAKEINTRESOURCE( IDM_FRAME ) ); if( g_hMenuFrame ) g_hMenuFrameWindow = GetSubMenu( g_hMenuFrame, MENU_FILE_POS ); g_hMenuChild = LoadMenu( g_hInstance, MAKEINTRESOURCE( IDM_CHILD ) ); if( g_hMenuChild ) g_hMenuChildWindow = GetSubMenu( g_hMenuChild, MENU_WINDOW_POS ); g_hMenuObjectPopup = LoadMenu( g_hInstance, MAKEINTRESOURCE( IDM_OBJECT ) ); if( g_hMenuObjectPopup ) g_hMenuObjectPopupWindow = GetSubMenu( g_hMenuObjectPopup, 0 ); hAccelFrame = LoadAccelerators( g_hInstance, MAKEINTRESOURCE( IDA_FRAME ) ); hAccelChild = LoadAccelerators( g_hInstance, MAKEINTRESOURCE( IDA_CHILD ) ); if( !g_hMenuFrame || !g_hMenuFrameWindow || !g_hMenuChild || !g_hMenuChildWindow || !hAccelFrame || !hAccelChild ) { ShowMessageBox( TRUE, MB_ICONSTOP, NULL ); return 1; } if( !CreateFrameWindow() ) { ShowMessageBox( TRUE, MB_ICONSTOP, NULL ); return 1; } ShowWindow( g_hWndFrame, nCmdShow ); UpdateWindow( g_hWndFrame ); while( GetMessage( &Msg, NULL, 0, 0 ) ) { if( !TranslateMDISysAccel( g_hWndClient, &Msg ) && !TranslateAccelerator( g_hWndFrame, hAccelFrame, &Msg ) && !TranslateAccelerator( g_hWndFrame, hAccelChild, &Msg ) ) { TranslateMessage( &Msg ); DispatchMessage( &Msg ); } } RegisterAllWindows( FALSE ); return Msg.wParam; } /*---------------------------------------------------------------------------- | | RegisterAllWindows | ---------------------------------------------------------------------------*/ static L_BOOL RegisterAllWindows ( L_BOOL bRegister ) { WNDCLASSEX WndClass; if( bRegister ) { WndClass.cbSize = sizeof( WNDCLASSEX ); WndClass.style = 0; WndClass.lpfnWndProc = FrameWindowProc; WndClass.cbClsExtra = 0; WndClass.cbWndExtra = 0; WndClass.hInstance = g_hInstance; WndClass.hIcon = LoadIcon( g_hInstance, MAKEINTRESOURCE( IDI_FRAME ) ); WndClass.hCursor = LoadCursor( NULL, IDC_ARROW ); WndClass.hbrBackground = GetStockObject( GRAY_BRUSH ); WndClass.lpszMenuName = NULL; WndClass.lpszClassName = g_szFrameClass; WndClass.hIconSm = NULL; if( !RegisterClassEx( &WndClass ) ) return FALSE; WndClass.cbSize = sizeof( WNDCLASSEX ); WndClass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; WndClass.lpfnWndProc = ChildWindowProc; WndClass.cbClsExtra = 0; WndClass.cbWndExtra = 0; WndClass.hInstance = g_hInstance; WndClass.hIcon = LoadIcon( g_hInstance, MAKEINTRESOURCE( IDI_CHILD ) ); WndClass.hCursor = LoadCursor( g_hInstance, MAKEINTRESOURCE( IDC_CHILD ) ); WndClass.hbrBackground = (HBRUSH) ( COLOR_WINDOW + 1 ); WndClass.lpszMenuName = NULL; WndClass.lpszClassName = g_szChildClass; WndClass.hIconSm = NULL; if( !RegisterClassEx( &WndClass ) ) return FALSE; } else { UnregisterClass( g_szFrameClass, g_hInstance ); UnregisterClass( g_szChildClass, g_hInstance ); } return TRUE; } /*---------------------------------------------------------------------------- | | CreateFrameWindow | ---------------------------------------------------------------------------*/ static L_BOOL CreateFrameWindow ( L_VOID ) { g_hWndFrame = CreateWindowEx( 0L, g_szFrameClass, g_szTitle, WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, g_hMenuFrame, g_hInstance, NULL ); if( !g_hWndFrame ) return FALSE; return TRUE; } /* EOF ----------------------------------------------------------------------*/