#pragma once
#include "resource.h"
#include "afxcmn.h"
#include "ExtendSliderCtrl.h"
#include "BtnST.h"
#include "BitmapSlider.h"
#include "tlhelp32.h"
//读文件结构体
// 为保证初始读数速度为25fps,此处计算得出速度为8533
static const int g_DefaultReadLen = 6000; // 8k
static const int g_MaxReadLen = 20480;     // 20k
static const int g_MinReadLen = 1024;      // 1k
struct struFileStru 
{
	ULONGLONG FileTotalLen;	// 文件 长度 
	ULONGLONG curFilePos;	    // 当前读取文件当前内容位置
	UINT  FrameLen;         // 每帧字节大小
	BYTE  Buffer[g_MaxReadLen];  // 从文件读取的数据每帧数据存放位置
	
	struFileStru()
	{
		FileTotalLen = 0;
		curFilePos = 0;	 
		FrameLen = g_DefaultReadLen;
	};

	void ClearStru()
	{
		FileTotalLen = 0;
		curFilePos = 0;	 
		FrameLen = 8533;
	}
};


// CShowReplayDlg 对话框
class CShowReplayDlg : public CDialogEx
{
	DECLARE_DYNAMIC(CShowReplayDlg)

public:
	CShowReplayDlg(CWnd* pParent = NULL);   // 标准构造函数
	virtual ~CShowReplayDlg();

// 对话框数据
	enum { IDD = IDD_DLG_REPLAY };

protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

	DECLARE_MESSAGE_MAP()

private:
	CString m_HFfilePath; //打开回放文件路径
	CFile m_ReplayFile;   //回放文件对象
	BOOL m_bFileOpen;     //文件是否打开成功
	struFileStru m_FileInfo; // 回放文件信息
	UINT m_TimerID;	     // 定时器编号
	UINT m_TimerPeriod;	 // 定时器周期
	BOOL m_bIsPlay;      // 正在播放或者已经暂停
	BOOL m_bPauseSliderReflect; // 暂停滑动条响应
	BOOL m_bService; // 判断后台服务程序是否打开

	// 美化视频回放界面按钮
	CButtonST m_Btn_OpenFile; // 打开文件
	CButtonST m_Btn_PlayPause;  // 播放暂停
	CButtonST m_Btn_Stop;  // 停止播放
	CButtonST m_Btn_SpeedUp;  // 加速播放
	CButtonST m_Btn_SpeedDown;  // 减速播放

	// 对话框半透明设置变量
	BOOL m_bTransParent; // TRUE为半透明,初始设置为FALSE


public:
	//CExtendSliderCtrl m_SliderReplayRatio; // 滑动条关联变量
	CBitmapSlider m_SliderReplayRatio; // 滑动条关联变量——加载bitmap

	virtual BOOL OnInitDialog();

	void StartTimer();  // 启动定时器
	void StopTimer();  // 关闭定时器

	void ReadAndPlay();  // 读取文件,并播放

	void SetFileReplayRatio(double ratio); // 设置回放进度
	
	afx_msg void OnBnClickedBtnOpenfile(); // 打开文件
	// 播放及暂停视频
	afx_msg void OnBnClickedBtnFileplaypause();
	// 停止播放
	afx_msg void OnBnClickedBtnFilestop();
	// 播放进度变慢
	afx_msg void OnBnClickedBtnFileslow();
	// 播放进度变快
	afx_msg void OnBnClickedBtnFilefast();
	// 选择模式——实时/回放(默认实时)
	afx_msg void OnCbnSelchangeComboxPlaytype();
	// 关闭窗口时销毁
	afx_msg void OnDestroy();
//	afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
	// 滑动条响应函数
	afx_msg LRESULT OnBitmapSliderMoving(WPARAM wParam, LPARAM lParam);

	// 判断进程是否正在运行函数 返回0说明没有运行
	DWORD GetProcessIdFromName(LPCTSTR name);

	virtual BOOL PreTranslateMessage(MSG* pMsg);

	// CH92中修改DC为EO/IR
	LRESULT ReturnPayloadTypeWarning(WPARAM wParam, LPARAM lParam);
};