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

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

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

BOOL CMultiDoc::OnNewDocument() {

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


 // TODO: Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°


 return TRUE;

}

ΠœΠ΅Ρ‚ΠΎΠ΄ Serialize вызываСтся Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Π½Π°Π΄ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Π½Π° дискС ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Ρ„Π°ΠΉΠ»:

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

// ΠœΠ΅Ρ‚ΠΎΠ΄ Serialize класса CMultiDoc

void CMultiDoc::Serialize(CArchive& ar) {

 if (ar.IsStoring()) {

  // TODO:

 } else {

  // TODO:

 }

}

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

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

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

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

#ifdef _DEBUG

void CMultiDoc::AssertValid() const {

 CDocument::AssertValid();

}


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

 CDocument::Dump(dc);

}

#endif //_DEBUG

Класс ΠΎΠΊΠ½Π° просмотра Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°

Класс ΠΎΠΊΠ½Π° просмотра Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ класс Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ Π³Π»Π°Π²Π½Ρ‹ΠΉ класс прилоТСния, ΠΈΠΌΠ΅ΡŽΡ‚ своСго Π΄Π²ΠΎΠΉΠ½ΠΈΠΊΠ° Π² ΠΎΠ΄Π½ΠΎΠΎΠΊΠΎΠ½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π’Π°ΠΊ, Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Single ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ класс ΠΎΠΊΠ½Π° просмотра CSingleView, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ с классом CMultiView.

Рис. 1.13. Окно Project Workspace, класс CMultiView


Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ список ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², входящих Π² класс CMultiView, Ссли ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚Π΅ Π² ΠΎΠΊΠ½Π΅ Project Workspace страницу ClassView (рис. 1.13). А сСйчас ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ класса CMultiView :

class CMultiView : public CView {

protected:

 CMultiView();

 DECLARE_DYNCREATE(CMultiView)


// Attributes

public:

 CMultiDoc* GetDocument();


// Operations

public:


// Overrides

 //{{AFX_VIRTUAL(CMultiView)

public:

 virtual void OnDraw(CDC* pDC); 

 virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

protected:

 virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);

 virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);

 virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);

 //}}AFX_VIRTUAL


// Implementation

public:

 virtual ~CMultiView();

#ifdef _DEBUG

 virtual void AssertValid() const;

 virtual void Dump(CDumpContext& dc) const;

#endif


protected:

 //{{AFX_MSG(CMultiView)

 //}}AFX_MSG

 DECLARE_MESSAGE_MAP()

};

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, класс CMultiView наслСдуСтся ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса CView. Π’Ρ‹, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ этот класс ΠΈ ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… классов Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ MFC.

ΠœΠ΅Ρ‚ΠΎΠ΄ GetDocument класса CMultiView

Π’ сСкции Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² класса CMultiView послС коммСнтария Attributes объявлСн ΠΌΠ΅Ρ‚ΠΎΠ΄ GetDocument. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, связанный с Π΄Π°Π½Π½Ρ‹ΠΌ ΠΎΠΊΠ½ΠΎΠΌ просмотра. Если ΠΎΠΊΠ½ΠΎ просмотра Π½Π΅ связано Π½ΠΈ с ΠΊΠ°ΠΊΠΈΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ, ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NULL.

ΠœΠ΅Ρ‚ΠΎΠ΄ GetDocument ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Одна ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ вСрсии прилоТСния, Π° другая – для ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ. ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ вСрсия GetDocument ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° нСпосрСдствСнно послС самого класса ΠΎΠΊΠ½Π° просмотра CMultiView ΠΊΠ°ΠΊ встраиваСмый (inline ) ΠΌΠ΅Ρ‚ΠΎΠ΄:

#ifndef _DEBUG

inline CMultiDoc* CMultiView::GetDocument() { return (CMultiDoc*) m_pDocument; }

#endif

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ m_pDocument являСтся элСмСнтом класса CView, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΊΠ°ΠΊ protected. Π’ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π° класс CView описаниС элСмСнта m_pDocument отсутствуСт. Однако, Π²Π°ΠΌ достаточно Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ послС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ ΠΎΠΊΠ½Π° просмотра Π² Π½Π΅ΠΌ записан ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚. Если Π²Ρ‹ ΠΆΠ΅Π»Π°Π΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ исходным тСкстам Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ MFC. Π’Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ класса CView ΠΈ элСмСнта этого класса m_pDocument Π² Ρ„Π°ΠΉΠ»Π΅ Afxwin.h.

ΠœΠ΅Ρ‚ΠΎΠ΄ GetDocument совпадаСт с ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ класса ΠΎΠΊΠ½Π° просмотра ΠΎΠ΄Π½ΠΎΠΎΠΊΠΎΠ½Π½ΠΎΠ³ΠΎ прилоТСния Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈΠΌ указатСля CMultiDoc.

ΠžΡ‚Π»Π°Π΄ΠΎΡ‡Π½Π°Ρ вСрсия GetDocument располоТСна Π² Ρ„Π°ΠΉΠ»Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ класса ΠΎΠΊΠ½Π° просмотра MultiView.cpp:

#ifdef _DEBUG

CMultiDoc* CMultiView::GetDocument() {

 ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMultiDoc)));

 return (CMultiDoc*) m_pDocument;

}

#endif //_DEBUG

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

Π’Π°Π±Π»ΠΈΡ†Π° сообщСний класса CMultiView располагаСтся Π² Ρ„Π°ΠΉΠ»Π΅ MultiView.cpp. НСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ Π½Π΅ΠΉ располоТСна ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Π° IMPLEMENT_DYNCREATE:

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

IMPLEMENT_DYNCREATE(CMultiView, CView)


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

BEGIN_MESSAGE_MAP(CMultiView, CView)

 //{{AFX_MSG_MAP(CMultiView)

 //}}AFX_MSG_MAP

 ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)

 ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)

 ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)

END_MESSAGE_MAP()

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

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ ΠΈ дСструктор класса CMultiView Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹. MFC AppWizard создаСт для Π½ΠΈΡ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ пустыС ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ β€œΠ½Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒβ€ сами:

CMultiView::CMultiView() {

 // TODO:

}


CMultiView::~CMultiView() {}

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

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ PreCreateWindow ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² классС CWnd. Он вызываСтся нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ созданиСм ΠΎΠΊΠ½Π°, связанного с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ класса. MFC AppWizard пСрСопрСдСляСт этот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

BOOL CMultiView::PreCreateWindow(CREATESTRUCT& cs) {

 // TODO:

 return CView::PreCreateWindow(cs);

}

ΠœΠ΅Ρ‚ΠΎΠ΄ OnDraw класса CMultiView

ΠœΠ΅Ρ‚ΠΎΠ΄ OnDraw ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² классС CView ΠΊΠ°ΠΊ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ вызываСтся, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π² ΠΎΠΊΠ½Π΅ просмотра. MFC AppWizard пСрСопрСдСляСт для вас ΠΌΠ΅Ρ‚ΠΎΠ΄ OnDraw класса CView ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

void CMultiView::OnDraw(CDC* pDC) {

 CMultiDoc* pDoc = GetDocument();

 ASSERT_VALID(pDoc);

 // TODO:

}

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π΅ строки ΠΌΠ΅Ρ‚ΠΎΠ΄Π° OnDraw ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ pDoc Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, связанный с Π΄Π°Π½Π½Ρ‹ΠΌ ΠΎΠΊΠ½ΠΎΠΌ просмотра.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса CMultiView, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ OnPreparePrinting, OnBeginPrinting ΠΈ OnEndPrinting, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² классС CView, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΆΠ΅Π»Π°Π΅Ρ‚ Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹ΠΉ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅ просмотра:

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

// ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса CMultiView, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²

BOOL CMultiView::OnPreparePrinting(CPrintInfo* pInfo) {

 return DoPreparePrinting(pInfo);

}


void CMultiView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) {

 // TODO:

}


void CMultiView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) {

 // TODO:

}

МногооконноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ MFC AppWizard, ΡƒΠΆΠ΅ β€œΡƒΠΌΠ΅Π΅Ρ‚β€ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ созданныС Π² Π½Π΅ΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π½Π° ΠΏΠ΅Ρ‡Π°Ρ‚Π°ΡŽΡ‰Π΅Π΅ устройство. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ OnPreparePrinting, OnBeginPrinting ΠΈ OnEndPrinting класса CView ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ возмоТностСй ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ ΠΈ Π² этой ΠΊΠ½ΠΈΠ³Π΅ Π½Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ.

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

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

#ifdef _DEBUG

void CMultiView::AssertValid() const {

 CView::AssertValid();

}


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

 CView::Dump(dc);

}

#endif //_DEBUG

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… сообщСний

ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… сообщСний Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ отличаСтся ΠΎΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… сообщСний. ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ сообщСния ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‚Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠ½ΠΈ поступили. Если Ρ‚Π°Π±Π»ΠΈΡ†Π° сообщСний класса ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π΅ содСрТит ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° сообщСния, Π±ΡƒΠ΄ΡƒΡ‚ просмотрСны Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ сообщСний Π΅Π³ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классов. Π’ Ρ‚ΠΎΠΌ случаС, Ссли Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классов Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ содСрТит ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ сообщСния, выполняСтся ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сообщСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π‘ΡƒΠ΄ΡŒΠ±Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… сообщСний Π³ΠΎΡ€Π°Π·Π΄ΠΎ слоТнСС. КомандноС сообщСниС, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ΅ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ прилоТСния, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ прилоТСния. Один ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², класс (ΠΈΠ»ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс) ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ содСрТит ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ этого сообщСния, выполняСт Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ΅ сообщСниС, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠΌΡƒ ΠΎΠΊΠ½Ρƒ прилоТСния, Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ счСтС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΎΠΊΠ½ΠΎΠΌ просмотра.

БущСствуСт стандартная ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ сообщСния. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² этой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ΅ сообщСниС, Ссли Π² Π΅Π³ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ сообщСний ΠΈΠ»ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ сообщСний Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классов Π΅ΡΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Π°. НСобработанныС сообщСния ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ дальшС, Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ прилоТСния.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… классов ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ сообщСния ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. НапримСр, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ прилоТСния, сначала ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ сообщСниС Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ, Π² Ρ‚ΠΎΠΌ числС Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌΡƒ ΠΎΠΊΠ½Ρƒ просмотра ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π΅ΠΌΡƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ. Волько Ссли сообщСниС остаСтся Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌ, просматриваСтся Ρ‚Π°Π±Π»ΠΈΡ†Π° сообщСний класса Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° прилоТСния. Если ΠΈ здСсь сообщСниС Π½Π΅ обрабатываСтся, ΠΎΠ½ΠΎ направляСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ прилоТСния.