/**
/* madnessEditor.cpp : definisce i comportamenti delle classi per l'applicazione.
/* **/

#include "stdafx.h"
#include "madnessEditor.h"
#include "MainFrm.h"

#include "ChildFrm.h"
#include "madnessEditorDoc.h"
#include "madnessEditorView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CmadnessEditorApp

BEGIN_MESSAGE_MAP(CmadnessEditorApp, CWinApp)
    ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
    // Comandi di documenti basati su file standard
    ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
    ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
    // Comando di stampa standard
    ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
END_MESSAGE_MAP()


//= costruzione di CmadnessEditorApp

CmadnessEditorApp::CmadnessEditorApp()
{

    // Inserire l'inizializzazione significativa in InitInstance.
AppMap.Meaningful=false;
}


//= L'unico e solo oggetto CmadnessEditorApp

CmadnessEditorApp theApp;

//= Inizializzazione di CmadnessEditorApp

BOOL CmadnessEditorApp::InitInstance()
{
    // InitCommonControls() č necessario in Windows XP se nel manifesto
    // di un'applicazione č specificato l'utilizzo di ComCtl32.dll versione 6 o successiva per attivare
    // gli stili visuali. In caso contrario, non sarą possibile creare finestre.
    InitCommonControls();

    CWinApp::InitInstance();

    // Inizializzare le librerie OLE.
    if (!AfxOleInit())
    {
        AfxMessageBox(IDP_OLE_INIT_FAILED);
        return FALSE;
    }
    AfxEnableControlContainer();
    // Inizializzazione standard
    // Se non si utilizzano queste funzionalitą e si desidera ridurre la dimensione
    // dell'eseguibile finale, č necessario rimuovere dal seguente codice
    // le specifiche routine di inizializzazione che non sono necessarie.
    // Modificare la chiave del Registro di sistema in cui sono archiviate le impostazioni desiderate
    // TODO: č necessario modificare questa stringa in modo appropriato,
    // inserendo ad esempio il nome della societą o dell'organizzazione.
    SetRegistryKey(_T("Applicazioni locali generate tramite la Creazione guidata di applicazioni locali"));
    LoadStdProfileSettings(4);  // Caricare le opzioni del file INI standard (inclusa MRU).

    
    // Registrare i modelli di documenti dell'applicazione. I modelli di documenti
    //  funzionano da connessione tra documenti, finestre cornice e viste.
    CMultiDocTemplate* pDocTemplate;
    pDocTemplate = new CMultiDocTemplate(IDR_madnessEditorTYPE,
        RUNTIME_CLASS(CmadnessEditorDoc),
        RUNTIME_CLASS(CChildFrame), // frame MDI figlio personalizzato
        RUNTIME_CLASS(CmadnessEditorView));
    AddDocTemplate(pDocTemplate);
    // creare finestra cornice MDI principale.
    CMainFrame* pMainFrame = new CMainFrame;
    if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
        return FALSE;
    m_pMainWnd = pMainFrame;



    // richiamare DragAcceptFiles solo se č presente un suffisso.
m_pMainWnd->DragAcceptFiles();
    // Attivare apertura esecuzione DDE.
    EnableShellOpen();
RegisterShellFileTypes(TRUE);
    //  In un'applicazione MDI questo deve verificarsi immediatamente dopo l'impostazione di m_pMainWnd.
    // Analizzare la riga di comando per i comandi shell standard, DDE, apri file


    CCommandLineInfo cmdInfo;
    ParseCommandLine(cmdInfo);
    // Inviare comandi specificati nella riga di comando. Restituisce FALSE se
    // l'applicazione č stata avviata con l'opzione /RegServer, /Register, /Unregserver o /Unregister.
    if (!ProcessShellCommand(cmdInfo))
        return FALSE;
    // La finestra principale č stata inizializzata, per cui č possibile visualizzarla e aggiornarla.
    pMainFrame->ShowWindow(m_nCmdShow);
    pMainFrame->UpdateWindow();


    return TRUE;
}



//= finestra di dialogo CAboutDlg utilizzata per visualizzare le informazioni sull'applicazione.

class CAboutDlg : public CDialog
{
public:
    CAboutDlg();

// Dati della finestra di dialogo
    enum { IDD = IDD_ABOUTBOX };

protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // supporto DDX/DDV

// Implementazione
protected:
    DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()

// comando dell'applicazione per eseguire la finestra di dialogo
void CmadnessEditorApp::OnAppAbout()
{
    CAboutDlg aboutDlg;
    aboutDlg.DoModal();
    
}