tools/installer/InstallerMain.cpp
author David Anderson <dvander@alliedmods.net>
Sun Oct 28 20:15:51 2007 +0000 (2007-10-28)
changeset 1651 077571ea8942
child 1722 2c16f160f5dd
permissions -rw-r--r--
initial import of incomplete installer
dvander@1651
     1
#include "InstallerMain.h"
dvander@1651
     2
#include "Welcome.h"
dvander@1651
     3
dvander@1651
     4
#define WMU_INIT_INSTALLER		WM_USER+1
dvander@1651
     5
dvander@1651
     6
HINSTANCE g_hInstance;
dvander@1651
     7
NEXT_DIALOG next_dialog = DisplayWelcome;
dvander@1651
     8
dvander@1651
     9
LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
dvander@1651
    10
{
dvander@1651
    11
	switch (message)
dvander@1651
    12
	{
dvander@1651
    13
	case WMU_INIT_INSTALLER:
dvander@1651
    14
		{
dvander@1651
    15
			while (next_dialog != NULL)
dvander@1651
    16
			{
dvander@1651
    17
				next_dialog = (NEXT_DIALOG)next_dialog(hWnd);
dvander@1651
    18
			}
dvander@1651
    19
			PostQuitMessage(0);
dvander@1651
    20
			break;
dvander@1651
    21
		}
dvander@1651
    22
	case WM_DESTROY:
dvander@1651
    23
		{
dvander@1651
    24
			PostQuitMessage(0);
dvander@1651
    25
			break;
dvander@1651
    26
		}
dvander@1651
    27
	default:
dvander@1651
    28
		{
dvander@1651
    29
			return DefWindowProc(hWnd, message, wParam, lParam);
dvander@1651
    30
		}
dvander@1651
    31
	}
dvander@1651
    32
dvander@1651
    33
	return 0;
dvander@1651
    34
}
dvander@1651
    35
dvander@1651
    36
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
dvander@1651
    37
{
dvander@1651
    38
	WNDCLASSEX wcex;
dvander@1651
    39
	BOOL bRet;
dvander@1651
    40
dvander@1651
    41
	wcex.cbSize			= sizeof(wcex);
dvander@1651
    42
	wcex.style			= CS_HREDRAW | CS_VREDRAW;
dvander@1651
    43
	wcex.lpfnWndProc	= MainWndProc;
dvander@1651
    44
	wcex.cbClsExtra		= 0;
dvander@1651
    45
	wcex.cbWndExtra		= 0;
dvander@1651
    46
	wcex.hInstance		= hInstance;
dvander@1651
    47
	wcex.hIcon			= LoadIcon(hInstance, MAKEINTRESOURCE(IDI_INSTALLER));
dvander@1651
    48
	wcex.hCursor		= LoadCursor(NULL, IDC_ARROW);
dvander@1651
    49
	wcex.hbrBackground	= (HBRUSH)(COLOR_WINDOW+1);
dvander@1651
    50
	wcex.lpszMenuName	= _T("InstallerMenu");
dvander@1651
    51
	wcex.lpszClassName	= _T("Installer");
dvander@1651
    52
	wcex.hIconSm		= LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
dvander@1651
    53
dvander@1651
    54
	if (!RegisterClassEx(&wcex))
dvander@1651
    55
	{
dvander@1651
    56
		return 1;
dvander@1651
    57
	}
dvander@1651
    58
dvander@1651
    59
	INITCOMMONCONTROLSEX ccex;
dvander@1651
    60
	ccex.dwSize = sizeof(ccex);
dvander@1651
    61
	ccex.dwICC = ICC_BAR_CLASSES
dvander@1651
    62
		|ICC_HOTKEY_CLASS
dvander@1651
    63
		|ICC_LISTVIEW_CLASSES
dvander@1651
    64
		|ICC_PROGRESS_CLASS
dvander@1651
    65
		|ICC_WIN95_CLASSES
dvander@1651
    66
		|ICC_TAB_CLASSES;
dvander@1651
    67
dvander@1651
    68
	if (!InitCommonControlsEx(&ccex))
dvander@1651
    69
	{
dvander@1651
    70
		return 1;
dvander@1651
    71
	}
dvander@1651
    72
dvander@1651
    73
	g_hInstance = hInstance;
dvander@1651
    74
dvander@1651
    75
	HWND hWnd = CreateWindow(
dvander@1651
    76
		_T("Installer"),
dvander@1651
    77
		_T("InstallerMain"),
dvander@1651
    78
		WS_OVERLAPPEDWINDOW,
dvander@1651
    79
		CW_USEDEFAULT,
dvander@1651
    80
		CW_USEDEFAULT,
dvander@1651
    81
		CW_USEDEFAULT,
dvander@1651
    82
		CW_USEDEFAULT,
dvander@1651
    83
		(HWND)NULL,
dvander@1651
    84
		(HMENU)NULL,
dvander@1651
    85
		hInstance,
dvander@1651
    86
		NULL);
dvander@1651
    87
	if (hWnd == NULL)
dvander@1651
    88
	{
dvander@1651
    89
		return 1;
dvander@1651
    90
	}
dvander@1651
    91
dvander@1651
    92
	ShowWindow(hWnd, SW_HIDE);
dvander@1651
    93
	UpdateWindow(hWnd);
dvander@1651
    94
dvander@1651
    95
	PostMessage(hWnd, WMU_INIT_INSTALLER, 0, 0);
dvander@1651
    96
dvander@1651
    97
	MSG msg;
dvander@1651
    98
	while ((bRet = GetMessage(&msg, NULL, 0, 0)) != 0)
dvander@1651
    99
	{
dvander@1651
   100
		if (bRet == -1)
dvander@1651
   101
		{
dvander@1651
   102
			return 1;
dvander@1651
   103
		}
dvander@1651
   104
		else
dvander@1651
   105
		{
dvander@1651
   106
			TranslateMessage(&msg);
dvander@1651
   107
			DispatchMessage(&msg);
dvander@1651
   108
		}
dvander@1651
   109
	}
dvander@1651
   110
dvander@1651
   111
	return (int)msg.wParam;
dvander@1651
   112
}