
// BKOscWnd-D2D.h : файл заголовка
// Вариант с использованием Direct2D. Что удивительно, работает сильно тормознутее OpenGL

#pragma once

#include <d2d1.h>
#include <d2d1helper.h>
#include "LockVarType.h"
#include "Defines.h"

#pragma comment (lib, "d2d1.lib")


// диалоговое окно CBKOscWnd
class CBKOscWnd : public CWnd
{
		CWnd               *m_cwndParent; //указатель на родительское окно
		HWND                m_hwndScreen;  // Screen View window handle
		D2D1_RECT_F         m_rectWnd; //размеры viewportа в оконном режиме

		ID2D1Factory *m_pDirect2dFactory;
		ID2D1HwndRenderTarget *m_pRenderTarget;
		ID2D1SolidColorBrush *m_pLightSlateGrayBrush;
		ID2D1SolidColorBrush *m_pWhiteBrush;
		ID2D1SolidColorBrush *m_pGreenBrush;
		SAMPLE_TYPE *m_inBuf;
		int m_inLen;
		LockVarType m_lockBusy;
// Создание
	public:
		CBKOscWnd();    // стандартный конструктор
		virtual ~CBKOscWnd(void);
		void SetBuffer(BYTE *pBuffer, int buffer_len);
		void display();

	protected:
		HRESULT ScreenView_Init();
		void ScreenView_Done();
		HRESULT CreateFactory();

// Реализация
	protected:
		// Созданные функции схемы сообщений
		virtual BOOL PreCreateWindow(CREATESTRUCT &cs);
		afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
		afx_msg void OnDestroy();
		afx_msg void OnSize(UINT nType, int cx, int cy);
		afx_msg BOOL OnEraseBkgnd(CDC *pDC);
		DECLARE_MESSAGE_MAP()
};
