Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Microsoft Visual C++ ΠΈ MFC. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для Windows 95 ΠΈ Windows NT. Π§Π°ΡΡ‚ΡŒ 2Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 6

Автор АлСксандр Π€Ρ€ΠΎΠ»ΠΎΠ²

НСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ сообщСний класса CMainFrame располагаСтся ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Π° IMPLEMENT_DYNAMIC. Она ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса CMainFrame ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ динамичСски Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния:

// ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса CMainFrame ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ автоматичСски

IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)


// Π’Π°Π±Π»ΠΈΡ†Π° сообщСний

BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)

 //{{AFX_MSG_MAP(CMainFrame)

 ON_WM_CREATE()

 //}}AFX_MSG_MAP

END_MESSAGE_MAP()

ΠœΠ΅Ρ‚ΠΎΠ΄ OnCreate класса CMainFrame

ΠœΠ΅Ρ‚ΠΎΠ΄ OnCreate класса CMainFrame создаСт ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π½Π° экранС ΠΏΠ°Π½Π΅Π»ΠΈ управлСния ΠΈ состояния:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) {

 if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1) return -1;


 if (!m_wndToolBar.Create(this) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) {

  // Ошибка создания ΠΏΠ°Π½Π΅Π»ΠΈ управлСния

  TRACE0("Failed to create toolbar\n");

  return -1;   

 }


 if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)))    {

  // Ошибка создания ΠΏΠ°Π½Π΅Π»ΠΈ состояния

  TRACE0("Failed to create status bar\n");

  return -1;     

 }


 m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);


 m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);

 EnableDocking(CBRS_ALIGN_ANY);

 DockControlBar(&m_wndToolBar);


 return 0;

}

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° indicators, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π°Ρ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠ°Π½Π΅Π»ΠΈ состояния, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π² Ρ„Π°ΠΉΠ»Π΅ MainFrm.h ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

static UINT indicators[] = {

 ID_SEPARATOR,

 ID_INDICATOR_CAPS,

 ID_INDICATOR_NUM,

 ID_INDICATOR_SCRL,

};

БСйчас ΠΌΡ‹ Π½Π΅ станСм ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ создания ΠΏΠ°Π½Π΅Π»Π΅ΠΉ состояния ΠΈ управлСния. Π’ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π² 24 Ρ‚ΠΎΠΌΠ΅ ΠΌΡ‹ ΡƒΠΆΠ΅ рассматривали ΠΌΠ΅Ρ‚ΠΎΠ΄ OnCreate ΠΎΠ΄Π½ΠΎΠΎΠΊΠΎΠ½Π½ΠΎΠ³ΠΎ прилоТСния Single. Он фактичСски ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ повторяСт ΠΌΠ΅Ρ‚ΠΎΠ΄ OnCreate прилоТСния Multi. Π’ΠΎ Π²Ρ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ посвятили ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ использования мСню, ΠΏΠ°Π½Π΅Π»Π΅ΠΉ состояния ΠΈ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ управлСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» β€œΠœΠ΅Π½ΡŽ, ΠΏΠ°Π½Π΅Π»ΠΈ управлСния ΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ состояния”. ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² Π΅Π³ΠΎ, Π²Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅ ΠΊΠ°ΠΊ устроСн ΠΌΠ΅Ρ‚ΠΎΠ΄ OnCreate класса CMainFrame.

ΠœΠ΅Ρ‚ΠΎΠ΄ PreCreateWindow класса CMainFrame

ΠœΠ΅Ρ‚ΠΎΠ΄ PreCreateWindow вызываСтся ΠΏΠ΅Ρ€Π΅Π΄ созданиСм ΠΎΠΊΠ½Π° ΠΈ позволяСт ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ характСристики. Π’ нашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ PreCreateWindow Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈ просто выполняСт ΠΎΠ±Ρ€Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) {

// TODO:


 return CMDIFrameWnd::PreCreateWindow(cs);

}

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ AssertValid ΠΈ Dump класса CMainFrame

Π’ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ вСрсии прилоТСния класс CMainFrame содСрТит пСрСопрСдСлСния Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² AssertValid ΠΈ Dump. Π­Ρ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ классС CObject ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ прилоТСния:

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

// ДиагностичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса CMainFrame

#ifdef DEBUG

void CMainFrame::AssertValid() const {

 CMDIFrameWnd::AssertValid();

}


void CMainFrame::Dump(CDumpContext& dc) const {

 CMDIFrameWnd::Dump(dc);

}

Класс Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ ΠΎΠΊΠ½Π° MDI

МногооконноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ строится с использованиСм большСго числа классов, Ρ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠΎΠΊΠΎΠ½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Помимо классов Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° прилоТСния ΠΈ классов ΠΎΠΊΠ½Π° просмотра Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, Π² Π½Π΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ класс, нСпосрСдствСнно связанный с ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΠΎΠΊΠΎΠ½ MDI. Π­Ρ‚ΠΎΡ‚ класс называСтся CChildFrame ΠΈ ΠΎΠ½ наслСдуСтся ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса CMDIChildWnd , ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ MFC:

class CChildFrame : public CMDIChildWnd {

 DECLARE_DYNCREATE(CChildFrame)

public:

 CChildFrame();


// Attributes

public:


// Operations

public:


// Overrides

 //{{AFX_VIRTUAL(CChildFrame)

 virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

 //}}AFX_VIRTUAL


// Implementation

public:

 virtual ~CChildFrame();

#ifdef _DEBUG

 virtual void AssertValid() const;

 virtual void Dump(CDumpContext& dc) const;

#endif


protected:

 //{{AFX_MSG(CChildFrame)

 //}}AFX_MSG

 DECLARE_MESSAGE_MAP()

};

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ класса CChildFrame Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² ΠΎΠΊΠ½Π΅ Project Workspace Π½Π° страницС ClassView (рис. 1.11).

Рис. 1.11. Окно Project Workspace, класс CChildFrame


ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса CChildFrame ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° MDI Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° прилоТСния. Π’Π½ΡƒΡ‚Ρ€ΠΈ этих ΠΎΠΊΠΎΠ½ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΎΠΊΠ½Π° просмотра Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ ΠΈ дСструктор класса CChildFrame

MFC AppWizard опрСдСляСт для класса CChildFrame конструктор ΠΈ дСструктор. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½ΠΈ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… дСйствий. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… для выполнСния ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² класса Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ ΠΎΠΊΠ½Π° MDI:

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

// ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ ΠΈ дСструктор класса CChildFrame

CChildFrame::CChildFrame() {

 // TODO:

}


CChildFrame::~CChildFrame() {}

Π’Π°Π±Π»ΠΈΡ†Π° сообщСний класса CChildFrame

Π’Π°Π±Π»ΠΈΡ†Π° сообщСний класса CChildFrame Π½Π΅ содСрТит ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² сообщСний:

// ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса CChildFrame ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ динамичСски

IMPLEMENT_DYNCREATE(CChildFrame, CMDIChildWnd)

// Π’Π°Π±Π»ΠΈΡ†Π° сообщСний

BEGIN_MESSAGE_MAP(CChildFrame, CMDIChildWnd)

 //{{AFX_MSG_MAP(CChildFrame)

 //}}AFX_MSG_MAP

END_MESSAGE_MAP()

ΠœΠ΅Ρ‚ΠΎΠ΄ PreCreateWindow класса CChildFrame

ΠœΠ΅Ρ‚ΠΎΠ΄ PreCreateWindow вызываСтся ΠΏΠ΅Ρ€Π΅Π΄ созданиСм Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ ΠΎΠΊΠ½Π° MDI. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ стили этого ΠΎΠΊΠ½Π°:

BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs) {

// TODO:


 return CMDIChildWnd::PreCreateWindow(cs);

}

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ AssertValid ΠΈ Dump класса CChildFrame

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ AssertValid ΠΈ Dump ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π² классС CMainFrame Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ вСрсии прилоТСния ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ прилоТСния:

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

// ДиагностичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса CChildFrame

#ifdef _DEBUG

void CChildFrame::AssertValid() const {

 CMDIChildWnd::AssertValid();

}


void CChildFrame::Dump(CDumpContext& dc) const {

 CMDIChildWnd::Dump(dc);

}

Класс Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° прилоТСния

Класс Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° прилоТСния CMultiDoc наслСдуСтся ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса CDocument Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ MFC. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ этого класса Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π² Ρ„Π°ΠΉΠ»Π΅ MultiDoc.h. ΠœΡ‹ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ структуру класса CMultiDoc Π½Π° рисункС 1.12.

Рис. 1.12. Окно Project Workspace, класс CMultiDoc


MFC AppWizard опрСдСляСт класс CMultiDoc ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ для ΠΎΠ΄Π½ΠΎΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… ΠΈ для ΠΌΠ½ΠΎΠ³ΠΎΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ЕдинствСнноС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ составляСт Π½Π°Π·Π²Π°Π½ΠΈΠ΅ класса Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ создаСтся Π½Π° основС ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

class CMultiDoc : public CDocument {

protected:

 CMultiDoc();

 DECLARE_DYNCREATE(CMultiDoc)


// Attributes

public:


// Operations

public:


// Overrides

 //{{AFX_VIRTUAL(CMultiDoc)

public:

 virtual BOOL OnNewDocument();

 virtual void Serialize(CArchive& ar);

 //}}AFX_VIRTUAL


// Implementation

public:

 virtual ~CMultiDoc();

#ifdef _DEBUG

 virtual void AssertValid() const;

 virtual void Dump(CDumpContext& dc) const;

#endif


protected:


protected:

 //{{AFX_MSG(CMultiDoc)

 //}}AFX_MSG

 DECLARE_MESSAGE_MAP()

};

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ ΠΈ дСструктор класса CMultiDoc

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ ΠΈ дСструктор класса CMultiDoc Π½Π΅ содСрТит ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости:

CMultiDoc::CMultiDoc() {

 // TODO:

}


CMultiDoc::~CMultiDoc() {}

Π’Π°Π±Π»ΠΈΡ†Π° сообщСний класса CMultiDoc

Π’Π°Π±Π»ΠΈΡ†Π° сообщСний класса CMultiDoc Π½Π΅ содСрТит Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° сообщСний:

// ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса CMultiDoc ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ динамичСски

IMPLEMENT_DYNCREATE(CMultiDoc, CDocument)


// Π’Π°Π±Π»ΠΈΡ†Π° сообщСний класса CMultiDoc

BEGIN_MESSAGE_MAP(CMultiDoc, CDocument)

 //{{AFX_MSG_MAP(CMultiDoc)

 //}}AFX_MSG_MAP

END_MESSAGE_MAP()

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ OnNewDocument ΠΈ Serialize класса CMultiDoc

Π’ классС CMultiDoc ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π΄Π²Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π° – OnNewDocument ΠΈ Serialize. Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ OnNewDocument ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² классС CDocument, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ нСпосрСдствСнно наслСдуСтся класс CSingleDoc.

ΠœΠ΅Ρ‚ΠΎΠ΄ OnNewDocument вызываСтся, ΠΊΠΎΠ³Π΄Π° Π½Π°Π΄ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ для прилоТСния. Для ΠΎΠ΄Π½ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ OnNewDocument вызывался Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΏΡ€ΠΈ запускС прилоТСния.

Для ΠΌΠ½ΠΎΠ³ΠΎΠΎΠΊΠΎΠ½Π½ΠΎΠ³ΠΎ прилоТСния ΠΌΠ΅Ρ‚ΠΎΠ΄ OnNewDocument вызываСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ создаСт Π½ΠΎΠ²Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠ± использовании ΠΌΠ΅Ρ‚ΠΎΠ΄Π° OnNewDocument ΠΌΡ‹ расскаТСм Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π³Π»Π°Π²Π°Ρ…, ΠΊΠΎΠ³Π΄Π° ΠΊ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ прилоТСния, созданному MFC AppWizard, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ собствСнный ΠΊΠΎΠ΄:

BOOL CMultiDoc::OnNewDocument() {

 if (!CDocument::OnNewDocument()) return FALSE;