/* ----------------------------- MAININIT.C --------------------------
 *      Inizializzazioni e conclusioni principali
 * ---------------------------------------------------------------- */

#define STRICT

#include <Windows.h>
#include "dlg3.h"

#define TOPCLASS "Dlg"        // Classe della finestra principale

// ---- Riferimenti esterni

/* ---------------------------- TopInit -----------------------------
 *      Creazione e inizializzazione della finestra principale
 * ---------------------------------------------------------------- */

static BOOL TopInit (LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASS       wc;                    // Struttura classe finestra
HWND           hWnd;                  // Finestra creata
BOOL           bOk = FALSE;           // Valore di ritorno
char           szTitolo [50];         // Titolo finestra
long FAR PASCAL TopWndProc (HWND, unsigned, WORD, DWORD);

	do
	{
		hAccel = NULL;        // Nessun acceleratore

// ---- Memorizza la classe della finestra

		if (!hPrevInst)       // Solo se 1ma istanza
		{
			wc.hCursor       = LoadCursor (NULL, IDC_ARROW);
			wc.hIcon         = LoadIcon (hInst, 
						     MAKEINTRESOURCE(TOPICON));
			wc.lpszMenuName  = MAKEINTRESOURCE (TOPMENU);
			wc.lpszClassName = TOPCLASS;
			wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
			wc.hInstance     = hInst;
			wc.style         = CS_HREDRAW | CS_VREDRAW;
			wc.lpfnWndProc   = (WNDPROC)TopWndProc;
			wc.cbClsExtra    = 0;
			wc.cbWndExtra    = 0;

			bOk = RegisterClass (&wc);
			if (!bOk)
				break;
		}

// ---- Creazione della finestra
		LoadString (hInst, TOPTITOLO, szTitolo, sizeof szTitolo);

		hWnd = CreateWindow (TOPCLASS, szTitolo, WS_OVERLAPPEDWINDOW,
				     CW_USEDEFAULT, CW_USEDEFAULT, 
				     CW_USEDEFAULT, CW_USEDEFAULT,
				     NULL, LoadMenu (hInst, 
				     MAKEINTRESOURCE (TOPMENU)), hInst, NULL);

		if (!hWnd)
			break;

// ---- Mostra la finestra
		ShowWindow (hWnd, nCmdShow);
		UpdateWindow (hWnd);

		bOk = TRUE;   // La creazione Š avvenuta correttamente
	}
	while (0);

	return bOk;
}

/* ---------------------------- BersaglioInit ---------------------------
 *      Creazione ed inizializzazione del controllo BERSAGLIO
 * ---------------------------------------------------------------- */

static VOID BersaglioInit ()
{
WNDCLASS      wc;      // Struttura classe finestra
long FAR PASCAL BersaglioWndProc (HWND, unsigned, WORD, DWORD);

// ---- Memorizza la classe della finestra

	if (!hPrevInst)                         // Solo se 1ma istanza
	{
		wc.hCursor       = LoadCursor (NULL, IDC_CROSS);
		wc.hIcon         = NULL;
		wc.lpszMenuName  = NULL;
		wc.lpszClassName = "Bersaglio";
		wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
		wc.hInstance     = hInst;
		wc.style         = CS_HREDRAW | CS_VREDRAW;
		wc.lpfnWndProc   = (WNDPROC)BersaglioWndProc;
		wc.cbClsExtra    = 0;
		wc.cbWndExtra    = 6;

		RegisterClass (&wc);
	}

}

/* ------------------------------ MainInit ---------------------------
 *      Inizializzazioni, chiamate dal main
 * ---------------------------------------------------------------- */

BOOL FAR MainInit (HINSTANCE hInstance, HINSTANCE hPrevInstance,
		   LPSTR lpCmdLine, int nCmdShow)
{
BOOL      bOk = FALSE;                    // Risultato

	do
	{
// ---- Inizializzazioni generali

		hInst = hInstance;              // Istanza corrente
		hPrevInst = hPrevInstance;      // Istanza precedente

// ---- Classe BERSAGLIO
		BersaglioInit ();

// ---- Creazione della finestra principale
		if (!TopInit (lpCmdLine, nCmdShow))
			break;

// ---- Uscita normale
		bOk = TRUE;

	}
	while (0);

	return bOk;
}

/* ------------------------------ MainConc ---------------------------
 *      Conclusioni, chiamate dal main
 * ---------------------------------------------------------------- */

VOID FAR MainConc (VOID)
{
	return;
}