tools/installer/InstallerMain.cpp
author Scott Ehlert <ds@alliedmods.net>
Sun Sep 14 03:01:05 2008 -0500 (2008-09-14)
changeset 2289 44045ead61cd
parent 1952 b7aa2b626807
parent 1722 2c16f160f5dd
permissions -rw-r--r--
Eliminated head: da55a80522cf, a remnant of sourcemod-1.1.0 branch
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@1722
     8
POINT g_GlobalPosition;
dvander@1722
     9
dvander@1722
    10
void UpdateGlobalPosition(HWND hWnd)
dvander@1722
    11
{
dvander@1722
    12
	WINDOWINFO wi;
dvander@1722
    13
dvander@1722
    14
	wi.cbSize = sizeof(WINDOWINFO);
dvander@1722
    15
	if (GetWindowInfo(hWnd, &wi))
dvander@1722
    16
	{
dvander@1722
    17
		g_GlobalPosition.x = wi.rcWindow.left;
dvander@1722
    18
		g_GlobalPosition.y = wi.rcWindow.top;
dvander@1722
    19
	}
dvander@1722
    20
}
dvander@1722
    21
dvander@1722
    22
void SetToGlobalPosition(HWND hWnd)
dvander@1722
    23
{
dvander@1722
    24
	WINDOWINFO wi;
dvander@1722
    25
	
dvander@1722
    26
	wi.cbSize = sizeof(WINDOWINFO);
dvander@1722
    27
	if (GetWindowInfo(hWnd, &wi))
dvander@1722
    28
	{
dvander@1722
    29
		MoveWindow(hWnd, 
dvander@1722
    30
			g_GlobalPosition.x, 
dvander@1722
    31
			g_GlobalPosition.y, 
dvander@1722
    32
			wi.rcWindow.right - wi.rcWindow.left,
dvander@1722
    33
			wi.rcWindow.bottom - wi.rcWindow.top,
dvander@1722
    34
			TRUE);
dvander@1722
    35
	}
dvander@1722
    36
}
dvander@1651
    37
dvander@1651
    38
LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
dvander@1651
    39
{
dvander@1651
    40
	switch (message)
dvander@1651
    41
	{
dvander@1651
    42
	case WMU_INIT_INSTALLER:
dvander@1651
    43
		{
dvander@1722
    44
			UpdateGlobalPosition(hWnd);
dvander@1651
    45
			while (next_dialog != NULL)
dvander@1651
    46
			{
dvander@1651
    47
				next_dialog = (NEXT_DIALOG)next_dialog(hWnd);
dvander@1651
    48
			}
dvander@1651
    49
			PostQuitMessage(0);
dvander@1651
    50
			break;
dvander@1651
    51
		}
dvander@1651
    52
	case WM_DESTROY:
dvander@1651
    53
		{
dvander@1651
    54
			PostQuitMessage(0);
dvander@1651
    55
			break;
dvander@1651
    56
		}
dvander@1651
    57
	default:
dvander@1651
    58
		{
dvander@1651
    59
			return DefWindowProc(hWnd, message, wParam, lParam);
dvander@1651
    60
		}
dvander@1651
    61
	}
dvander@1651
    62
dvander@1651
    63
	return 0;
dvander@1651
    64
}
dvander@1651
    65
dvander@1651
    66
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
dvander@1651
    67
{
dvander@1651
    68
	WNDCLASSEX wcex;
dvander@1651
    69
	BOOL bRet;
dvander@1651
    70
dvander@1651
    71
	wcex.cbSize			= sizeof(wcex);
dvander@1651
    72
	wcex.style			= CS_HREDRAW | CS_VREDRAW;
dvander@1651
    73
	wcex.lpfnWndProc	= MainWndProc;
dvander@1651
    74
	wcex.cbClsExtra		= 0;
dvander@1651
    75
	wcex.cbWndExtra		= 0;
dvander@1651
    76
	wcex.hInstance		= hInstance;
dvander@1651
    77
	wcex.hIcon			= LoadIcon(hInstance, MAKEINTRESOURCE(IDI_INSTALLER));
dvander@1651
    78
	wcex.hCursor		= LoadCursor(NULL, IDC_ARROW);
dvander@1651
    79
	wcex.hbrBackground	= (HBRUSH)(COLOR_WINDOW+1);
dvander@1651
    80
	wcex.lpszMenuName	= _T("InstallerMenu");
dvander@1651
    81
	wcex.lpszClassName	= _T("Installer");
dvander@1651
    82
	wcex.hIconSm		= LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
dvander@1651
    83
dvander@1651
    84
	if (!RegisterClassEx(&wcex))
dvander@1651
    85
	{
dvander@1651
    86
		return 1;
dvander@1651
    87
	}
dvander@1651
    88
dvander@1651
    89
	INITCOMMONCONTROLSEX ccex;
dvander@1651
    90
	ccex.dwSize = sizeof(ccex);
dvander@1651
    91
	ccex.dwICC = ICC_BAR_CLASSES
dvander@1651
    92
		|ICC_HOTKEY_CLASS
dvander@1651
    93
		|ICC_LISTVIEW_CLASSES
dvander@1651
    94
		|ICC_PROGRESS_CLASS
dvander@1651
    95
		|ICC_WIN95_CLASSES
dvander@1651
    96
		|ICC_TAB_CLASSES;
dvander@1651
    97
dvander@1651
    98
	if (!InitCommonControlsEx(&ccex))
dvander@1651
    99
	{
dvander@1651
   100
		return 1;
dvander@1651
   101
	}
dvander@1651
   102
dvander@1651
   103
	g_hInstance = hInstance;
dvander@1651
   104
dvander@1651
   105
	HWND hWnd = CreateWindow(
dvander@1651
   106
		_T("Installer"),
dvander@1651
   107
		_T("InstallerMain"),
dvander@1651
   108
		WS_OVERLAPPEDWINDOW,
dvander@1651
   109
		CW_USEDEFAULT,
dvander@1651
   110
		CW_USEDEFAULT,
dvander@1651
   111
		CW_USEDEFAULT,
dvander@1651
   112
		CW_USEDEFAULT,
dvander@1651
   113
		(HWND)NULL,
dvander@1651
   114
		(HMENU)NULL,
dvander@1651
   115
		hInstance,
dvander@1651
   116
		NULL);
dvander@1651
   117
	if (hWnd == NULL)
dvander@1651
   118
	{
dvander@1651
   119
		return 1;
dvander@1651
   120
	}
dvander@1651
   121
dvander@1651
   122
	ShowWindow(hWnd, SW_HIDE);
dvander@1651
   123
	UpdateWindow(hWnd);
dvander@1651
   124
dvander@1651
   125
	PostMessage(hWnd, WMU_INIT_INSTALLER, 0, 0);
dvander@1651
   126
dvander@1651
   127
	MSG msg;
dvander@1651
   128
	while ((bRet = GetMessage(&msg, NULL, 0, 0)) != 0)
dvander@1651
   129
	{
dvander@1651
   130
		if (bRet == -1)
dvander@1651
   131
		{
dvander@1651
   132
			return 1;
dvander@1651
   133
		}
dvander@1651
   134
		else
dvander@1651
   135
		{
dvander@1651
   136
			TranslateMessage(&msg);
dvander@1651
   137
			DispatchMessage(&msg);
dvander@1651
   138
		}
dvander@1651
   139
	}
dvander@1651
   140
dvander@1651
   141
	return (int)msg.wParam;
dvander@1651
   142
}