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
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
ΠΡΠΎΡΠ΅ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΠ±ΡΡΠ½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΎΠ½ΠΈ ΠΏΠΎΡΡΡΠΏΠΈΠ»ΠΈ. ΠΡΠ»ΠΈ ΡΠ°Π±Π»ΠΈΡΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΊΠ»Π°ΡΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π±ΡΠ΄ΡΡ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅Π½Ρ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π΅Π³ΠΎ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ². Π ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
Π‘ΡΠ΄ΡΠ±Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅. ΠΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠ»Π°ΡΡ (ΠΈΠ»ΠΈ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ) ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΡΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ. Π’Π°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠΌΡ ΠΎΠΊΠ½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΡΡΠ΅ΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½ΠΎ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΎΠΊΠ½ΠΎΠΌ ΠΏΡΠΎΡΠΌΠΎΡΡΠ°.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΡΡΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ Π² Π΅Π³ΠΎ ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π΅ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΠΌΠ°ΠΊΡΠΎΠΊΠΎΠΌΠ°Π½Π΄Π°. ΠΠ΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π΄Π°Π»ΡΡΠ΅, Π΄ΡΡΠ³ΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ±ΡΠ΅ΠΊΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π°ΠΊΡΠΈΠ²Π½ΠΎΠΌΡ ΠΎΠΊΠ½Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌΡ Π΅ΠΌΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ. Π’ΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΠ°Π΅ΡΡΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΌ, ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°Π±Π»ΠΈΡΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΊΠ»Π°ΡΡΠ° Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΈ Π·Π΄Π΅ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ, ΠΎΠ½ΠΎ Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.