1*c2c66affSColin Finck /*
2*c2c66affSColin Finck  * PROJECT:     ReactOS VGA Font Editor
3*c2c66affSColin Finck  * LICENSE:     GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4*c2c66affSColin Finck  * PURPOSE:     Main entry point of the application
5*c2c66affSColin Finck  * COPYRIGHT:   Copyright 2008 Colin Finck (colin@reactos.org)
6*c2c66affSColin Finck  */
7*c2c66affSColin Finck 
8*c2c66affSColin Finck #include "precomp.h"
9*c2c66affSColin Finck 
10*c2c66affSColin Finck static const WCHAR szCharacterClipboardFormat[] = L"RosVgaFontChar";
11*c2c66affSColin Finck 
12*c2c66affSColin Finck HINSTANCE hInstance;
13*c2c66affSColin Finck HANDLE hProcessHeap;
14*c2c66affSColin Finck PWSTR szAppName;
15*c2c66affSColin Finck UINT uCharacterClipboardFormat;
16*c2c66affSColin Finck 
17*c2c66affSColin Finck INT WINAPI
wWinMain(HINSTANCE hInst,HINSTANCE hPrevInstance,LPWSTR lpCmdLine,int nCmdShow)18*c2c66affSColin Finck wWinMain(HINSTANCE hInst, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
19*c2c66affSColin Finck {
20*c2c66affSColin Finck     HACCEL hAccel;
21*c2c66affSColin Finck     INT nRet = 1;
22*c2c66affSColin Finck     MSG msg;
23*c2c66affSColin Finck     PMAIN_WND_INFO Info = 0;
24*c2c66affSColin Finck 
25*c2c66affSColin Finck     UNREFERENCED_PARAMETER(hPrevInstance);
26*c2c66affSColin Finck     UNREFERENCED_PARAMETER(lpCmdLine);
27*c2c66affSColin Finck 
28*c2c66affSColin Finck     hInstance = hInst;
29*c2c66affSColin Finck     hProcessHeap = GetProcessHeap();
30*c2c66affSColin Finck 
31*c2c66affSColin Finck     AllocAndLoadString(&szAppName, IDS_APPTITLE);
32*c2c66affSColin Finck 
33*c2c66affSColin Finck     hAccel = LoadAcceleratorsW( hInstance, MAKEINTRESOURCEW(IDA_MAINACCELERATORS) );
34*c2c66affSColin Finck 
35*c2c66affSColin Finck     uCharacterClipboardFormat = RegisterClipboardFormatW(szCharacterClipboardFormat);
36*c2c66affSColin Finck     if(!uCharacterClipboardFormat)
37*c2c66affSColin Finck         return 1;
38*c2c66affSColin Finck 
39*c2c66affSColin Finck     if( InitMainWndClass() && InitFontWndClass() && InitFontBoxesWndClass() && InitEditGlyphWndClasses() )
40*c2c66affSColin Finck     {
41*c2c66affSColin Finck         if( CreateMainWindow(nCmdShow, &Info) )
42*c2c66affSColin Finck         {
43*c2c66affSColin Finck             while( GetMessageW(&msg, NULL, 0, 0) )
44*c2c66affSColin Finck             {
45*c2c66affSColin Finck                 if( !TranslateMDISysAccel(Info->hMdiClient, &msg) &&
46*c2c66affSColin Finck                     !TranslateAccelerator(Info->hMainWnd, hAccel, &msg) )
47*c2c66affSColin Finck                 {
48*c2c66affSColin Finck                     TranslateMessage(&msg);
49*c2c66affSColin Finck                     DispatchMessage(&msg);
50*c2c66affSColin Finck                 }
51*c2c66affSColin Finck             }
52*c2c66affSColin Finck 
53*c2c66affSColin Finck             nRet = 0;
54*c2c66affSColin Finck         }
55*c2c66affSColin Finck     }
56*c2c66affSColin Finck 
57*c2c66affSColin Finck     HeapFree(hProcessHeap, 0, szAppName);
58*c2c66affSColin Finck 
59*c2c66affSColin Finck     // Just unregister our window classes, don't care whether they were created or not
60*c2c66affSColin Finck     UnInitEditGlyphWndClasses();
61*c2c66affSColin Finck     UnInitFontBoxesWndClass();
62*c2c66affSColin Finck     UnInitFontWndClass();
63*c2c66affSColin Finck     UnInitMainWndClass();
64*c2c66affSColin Finck 
65*c2c66affSColin Finck     return nRet;
66*c2c66affSColin Finck }
67