#pragma once

#include "MultiEditListCtrl.h"
#include "DocPaneDlgViewBase.h"

// флаги, задающие вилидные значения, 1 = значение есть, 0 = значения нет, и далать ничего не надо
constexpr DWORD COL_WIDTH = 1;
constexpr DWORD COL_COLOR = 2;
constexpr DWORD COL_VALUE = 4;
constexpr DWORD COL_EDITABLE = 8;

struct ColParam_t
{
	DWORD       dwState;    // флаги
	int         nWidth;     // ширина колонки
	COLORREF    color;      // цвет колонки
};

struct CellParam_t
{
	DWORD       dwState;    // флаги
	CString     strValue;   // значение в ячейке
	COLORREF    color;      // цвет колонки
};

struct ListParam_t
{
	int     nCols;
	int     nRows;
	UINT    nGrpId;
	CMultiEditListCtrl *pList;
	const ColParam_t *pCP;
	const CellParam_t *pRP;
};


class CAZBKDumpView : public CDocPaneDlgViewBase
{
		DECLARE_DYNAMIC(CAZBKDumpView)

		CMultiEditListCtrl  m_listDMA;
		CMultiEditListCtrl  m_listCOVOX;
		CMultiEditListCtrl  m_listAZBK;
		CMultiEditListCtrl  m_listScr;
		CMultiEditListCtrl  m_listPalette;

		CMultiEditListCtrl  m_listMapper;
		CMultiEditListCtrl  m_listMapCtrl;
		CMultiEditListCtrl  m_listUART;

	protected:
		void                CreateList(ListParam_t &p);
		void                ResizeList(ListParam_t &p, CPoint &ptLT, int &maxGW);
		void                SetGrpWidth(CWnd *grp, int width);

	public:
		enum { IDD = IDD_AZBK_REG_DUMP };
		CAZBKDumpView();
		virtual ~CAZBKDumpView() override;

		void                DisplayRegDump();
		void                DisplayRegs();

	protected:
		virtual void        DoDataExchange(CDataExchange *pDX) override;    // поддержка DDX/DDV
		afx_msg LRESULT     HandleInitDialog(WPARAM wp, LPARAM lp);
		DECLARE_MESSAGE_MAP()
};

