// Multi.cpp 
//

#include "stdafx.h"
#include "Multi.h"

#include "MainFrm.h"
#include "ChildFrm.h"
#include "MultiDoc.h"
#include "MultiView.h"

#include "EditorDoc.h"
#include "EditorView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// Таблица сообщений класса CMultiApp

BEGIN_MESSAGE_MAP(CMultiApp, CWinApp)
	//{{AFX_MSG_MAP(CMultiApp)
	ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
	//}}AFX_MSG_MAP
	ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
	ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
	ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// Конструктор класса CMultiApp 

CMultiApp::CMultiApp()
{
	// TODO: 
}

/////////////////////////////////////////////////////////////////////////////
// Главный объект приложения
CMultiApp theApp;

/////////////////////////////////////////////////////////////////////////////
// Метод InitInstance
BOOL CMultiApp::InitInstance()
{

#ifdef _AFXDLL
   Enable3dControls();   
#else
   Enable3dControlsStatic();
#endif

   // Загружаем файл конфигурации
   LoadStdProfileSettings();  

   // Создаем шаблон графического документа
   CMultiDocTemplate* pDocTemplate;
   pDocTemplate = new CMultiDocTemplate(
      IDR_MULTITYPE,
      RUNTIME_CLASS(CMultiDoc),
      RUNTIME_CLASS(CChildFrame), 
      RUNTIME_CLASS(CMultiView));

   // Регистрируем шаблон графического документа
   AddDocTemplate(pDocTemplate);


   // Создаем шаблон текстового документа
   pDocTemplate = new CMultiDocTemplate(
      IDR_EDITORTYPE,
      RUNTIME_CLASS(CEditorDoc),
      RUNTIME_CLASS(CChildFrame), 
      RUNTIME_CLASS(CEditorView));

   // Регистрируем шаблон текстового документа
   AddDocTemplate(pDocTemplate);


   // Создаем главное окно приложения (MDI Frame window)
   CMainFrame* pMainFrame = new CMainFrame;
   if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
      return FALSE;
   m_pMainWnd = pMainFrame;

   // Выполняем стандартную обработку командной строки
   // приложения
   CCommandLineInfo cmdInfo;
   ParseCommandLine(cmdInfo);

   // Обрабатываем командную строку приложения
   if (!ProcessShellCommand(cmdInfo))
      return FALSE;

   // Отображаем окно
   pMainFrame->ShowWindow(m_nCmdShow);
   pMainFrame->UpdateWindow();

   return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// Класс CAboutDlg, управляющий диалоговой панелью About

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

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX); 
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

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

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

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

void CMultiApp::OnAppAbout()
{
	CAboutDlg aboutDlg;
	aboutDlg.DoModal();
}

/////////////////////////////////////////////////////////////////////////////
