// Sample_MFCView.h : CSample_MFCView クラスのインターフェイス
//


#pragma once

#include "CArtCamSdk.hpp"

const TCHAR ERRORLIST[][128] = {
	_T(""),
	_T("初期化されてません"),
	_T("利用不可能なデバイスにアクセスしようとしました"),
	_T("画像取り込み用スレッド作成に失敗"),
	_T("ウィンドウ作成に失敗"),
	_T("イメージ転送に十分なメモリを確保していない　又は　メモリの確保に失敗"),
	_T("カメラ（デバイス）の設定でエラー"),
	_T("カメラ（デバイス）のサイズ設定でエラー"),
	_T("映像取り込みで失敗"),
	_T("引数が間違ってます"),
	_T("DirectShow 初期化エラー"),
	_T("この機能はサポートされていません"),
	_T("不明のエラー"),
	_T("デバイスが消失しました"),
	_T("指定ファイルが見つかりません"),
	_T("FPGAの設定でエラー"),
	_T("画像転送エラー"),
};

const int ERRORCOUNT				= sizeof(ERRORLIST)				/ (128 * sizeof(TCHAR));





class CSample_MFCView : public CView
{
public:
	CArtCamSdk	m_CArtCamSdk;
	LPBYTE		m_pImage;			// 画像データが格納される領域
	BOOL		m_PreviewMode;		// プレビュー表示／コールバック表示
	LONG		m_DllType;			// 接続するDLL
	LONG		m_DllSata;			// SATAのDllCount
	LONG		m_DllCount;			// 見つかったDLLの数
	LONG		m_CurrentCameraType;// 現在のカメラタイプ
	LONG		m_SataType;			// SATAのカメラタイプ
	LONG		m_DeviceCount;		// 検出されたデバイスの数
	LONG		m_SelectDevice;		// 選択しているデバイス番号

	BOOL		m_SaveFlg;			// 保存が可能か判定
	BOOL		m_StopFlg;			// 停止中か判定
	CString		m_RecName;			// 録画したファイル名

	LONG		m_BitMode;			// 16ビット転送モード


	LRESULT		DrawImage		(HDC hDC);
	BOOL		OnDllChange		(LONG DllType, LONG SataType);
	BOOL		OnDeviceChange	(LONG Number);
	void		ChangeScrollbar	(void);
	void		CheckColorMode	(void);


	void InitMenuPopup(CMenu* pPopupMenu);



protected: // シリアル化からのみ作成します。
	CSample_MFCView();
	DECLARE_DYNCREATE(CSample_MFCView)

// 属性
public:
	CSample_MFCDoc* GetDocument() const;

// 操作
public:

// オーバーライド
	public:
	virtual void OnDraw(CDC* pDC);  // このビューを描画するためにオーバーライドされます。
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:

// 実装
public:
	virtual ~CSample_MFCView();
#ifdef _DEBUG
	virtual void AssertValid() const;
	virtual void Dump(CDumpContext& dc) const;
#endif


// 生成された、メッセージ割り当て関数
protected:
	DECLARE_MESSAGE_MAP()
public:
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnDestroy();
	afx_msg void OnTimer(UINT_PTR nIDEvent);
	afx_msg void OnSize(UINT nType, int cx, int cy);
	afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
	afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
	afx_msg void OnMouseMove(UINT nFlags, CPoint point);
	afx_msg LRESULT OnGraphPaint(WPARAM wParam, LPARAM lParam);
	afx_msg LRESULT OnError(WPARAM wParam, LPARAM lParam);
	afx_msg void OnFileSaveimage();
	afx_msg void OnFileRec();
	afx_msg void OnExit();
	afx_msg void OnShowPreview();
	afx_msg void OnShowCallback();
	afx_msg void OnShowSnapshot();
	afx_msg void OnShowCapture();
	afx_msg void OnShowTrigger();
	afx_msg void OnShowStop();
	afx_msg void OnSetFormat();
	afx_msg void OnSetFilter();
	afx_msg void OnSetAnalog();
	afx_msg void OnSetFilterApp();
	afx_msg void OnDllReload();
	afx_msg void OnDevice01();
	afx_msg void OnDevice02();
	afx_msg void OnDevice03();
	afx_msg void OnDevice04();
	afx_msg void OnDevice05();
	afx_msg void OnDevice06();
	afx_msg void OnDevice07();
	afx_msg void OnDevice08();
	afx_msg void OnSetSizeApp();
	afx_msg void OnSetIoApp();
	afx_msg void OnSetMonitorApp();
	afx_msg void OnSetCorrection();
};

#ifndef _DEBUG  // Sample_MFCView.cpp のデバッグ バージョン
inline CSample_MFCDoc* CSample_MFCView::GetDocument() const
   { return reinterpret_cast<CSample_MFCDoc*>(m_pDocument); }
#endif

