
// BKView.h : интерфейс класса CBKView
//

#pragma once

#include "Debugger.h"
#include "PrintDlg.h"

class CScreen;
class CBKDoc;

class CBKView : public CView
{
	protected: // создать только из сериализации
		CBKView();
		DECLARE_DYNCREATE(CBKView)

// Атрибуты
	public:
		CBKDoc *GetDocument() const;

// Операции
	public:

// Переопределение
	public:
		virtual void OnDraw(CDC *pDC) override;  // переопределено для отрисовки этого представления
		virtual BOOL PreCreateWindow(CREATESTRUCT &cs) override;
	protected:
		virtual BOOL OnPreparePrinting(CPrintInfo *pInfo) override;
		virtual void OnBeginPrinting(CDC *pDC, CPrintInfo *pInfo) override;
		virtual void OnEndPrinting(CDC *pDC, CPrintInfo *pInfo) override;
		virtual BOOL PreTranslateMessage(MSG *pMsg) override;

// Реализация
	public:
		virtual ~CBKView();
		inline void DrawScreen();
#ifdef _DEBUG
		virtual void AssertValid() const;
		virtual void Dump(CDumpContext &dc) const;
#endif
		bool                ReCreateSCR();

	protected:
		enum                {PRINT_LINES_PER_PAGE = 66};
		enum                {PRINT_TAB_LENGTH = 8};
		CRgn                m_rgnRes;
		CBrush              m_br;

		CScreen            *m_pScreen;
		CDebugger           m_debugger;     //отладчик
		//начальные флаги диалога печати
		bool                m_bPrintScreen;
		bool                m_bPrintInverse;
		CString             m_strPrintTitle;

		void                Print(CPrintDlg *pPrintDlg);
		WORD                PrintPage(CDC *pDC, CPrintInfo *pInfo, WORD currAddress, WORD endAddress);
		int                 CreateSCR();
// Созданные функции схемы сообщений
	protected:
		afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
		afx_msg void OnSize(UINT nType, int cx, int cy);
		afx_msg void OnFilePrintPreview();
		afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
		afx_msg void OnContextMenu(CWnd *pWnd, CPoint point);
		afx_msg BOOL OnEraseBkgnd(CDC *pDC);
		afx_msg void OnCustomFilePrint();
		DECLARE_MESSAGE_MAP()
};

#ifndef _DEBUG  // отладочная версия в BKView.cpp
inline CBKDoc *CBKView::GetDocument() const
{
	return reinterpret_cast<CBKDoc *>(m_pDocument);
}
#endif

