// CTapeCtrlView.cpp: файл реализации
//

#include "stdafx.h"

#include "TapeCtrlView.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#define new DEBUG_NEW
#endif

// CTapeCtrlView

IMPLEMENT_DYNAMIC(CTapeCtrlView, CDockablePane)

CTapeCtrlView::CTapeCtrlView()
{
}

CTapeCtrlView::~CTapeCtrlView()
{
}

BEGIN_MESSAGE_MAP(CTapeCtrlView, CDockablePane)
	ON_WM_CREATE()
	ON_WM_SIZE()
	ON_WM_GETMINMAXINFO()
	ON_WM_PAINT()
END_MESSAGE_MAP()


// обработчики сообщений CTapeCtrlView

int CTapeCtrlView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CDockablePane::OnCreate(lpCreateStruct) == -1)
	{
		return -1;
	}

	if (!m_TapeCtrlDlg.Create(IDD_TAPE_CONTROL, this))
	{
		TRACE0("Не удалось создать диалог Tape Control\n");
		return -1;      // не удалось создать
	}

	AdjustLayout();
	return 0;
}

void CTapeCtrlView::OnSize(UINT nType, int cx, int cy)
{
	MINMAXINFO MMI;
	m_TapeCtrlDlg.OnGetMinMaxInfo(&MMI);

	//как ни странно, но это совершенно не работает.
	if (cx < MMI.ptMinTrackSize.x)
	{
		cx = MMI.ptMinTrackSize.x;
	}

	if (cy < MMI.ptMinTrackSize.y)
	{
		cy = MMI.ptMinTrackSize.y;
	}

	//мы задаем строго определённые размеры, а окошку похуй. видимо надо где-то в другом месте ещё onsize смотреть
	CDockablePane::OnSize(nType, cx, cy);
	AdjustLayout();
}

void CTapeCtrlView::AdjustLayout()
{
	if (GetSafeHwnd() == NULL)
	{
		return;
	}

	CRect rectClient;
	GetClientRect(rectClient);
	m_TapeCtrlDlg.SetWindowPos(NULL, rectClient.left, rectClient.top, rectClient.Width(), rectClient.Height(), SWP_NOACTIVATE | SWP_NOZORDER);
}

void CTapeCtrlView::OnGetMinMaxInfo(MINMAXINFO *lpMMI)
{
	m_TapeCtrlDlg.OnGetMinMaxInfo(lpMMI);
}

void CTapeCtrlView::OnPaint()
{
	CPaintDC dc(this); // device context for painting
	// TODO: добавьте свой код обработчика сообщений
	// Не вызывать CDockablePane::OnPaint() для сообщений рисования
	m_TapeCtrlDlg.RedrawWindow();
}
