|
|
|
|
// ShowReplayDlg.cpp : ʵ<><CAB5><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
#include "stdafx.h"
|
|
|
|
|
#include "CH91PayloadSoftware.h"
|
|
|
|
|
#include "ShowReplayDlg.h"
|
|
|
|
|
#include "afxdialogex.h"
|
|
|
|
|
#include "Global.h"
|
|
|
|
|
#include "GlobalMessage.h"
|
|
|
|
|
|
|
|
|
|
// <20><>ý<EFBFBD>嶨ʱ<E5B6A8><CAB1>
|
|
|
|
|
#include "MMSystem.h"
|
|
|
|
|
#pragma comment(lib, "winmm")
|
|
|
|
|
|
|
|
|
|
//timeSetEvent<6E>еĻص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𣬵<EFBFBD><F0A3ACB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݹ̶<DDB9>
|
|
|
|
|
void CALLBACK TimerPlayFunc(UINT uTimerID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2)
|
|
|
|
|
{
|
|
|
|
|
// Ŀ<>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>ReadandPlay<61><79><EFBFBD><EFBFBD>dwUserǿ<72><C7BF>ת<EFBFBD><D7AA>Ϊptr<74><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>ptr<74><72>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD>
|
|
|
|
|
CShowReplayDlg* ptr = reinterpret_cast<CShowReplayDlg*>(dwUser);
|
|
|
|
|
// <20><>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
if (ptr != NULL)
|
|
|
|
|
{
|
|
|
|
|
ptr->ReadAndPlay();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// CShowReplayDlg <20>Ի<EFBFBD><D4BB><EFBFBD>
|
|
|
|
|
|
|
|
|
|
IMPLEMENT_DYNAMIC(CShowReplayDlg, CDialogEx)
|
|
|
|
|
|
|
|
|
|
CShowReplayDlg::CShowReplayDlg(CWnd* pParent /*=NULL*/)
|
|
|
|
|
: CDialogEx(CShowReplayDlg::IDD, pParent)
|
|
|
|
|
{
|
|
|
|
|
m_TimerID = 0;
|
|
|
|
|
m_TimerPeriod = 20; // Ĭ<><C4AC>20ms <09><><EFBFBD><EFBFBD>һ<EFBFBD>ζ<EFBFBD>ý<EFBFBD><C3BD>ʱ<EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EO<45><4F>IR<49><52><EFBFBD>壬<EFBFBD><E5A3AC><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>50<35>Σ<EFBFBD>EO<45><4F>IR֡Ƶ<D6A1><C6B5>25
|
|
|
|
|
m_bFileOpen = FALSE;
|
|
|
|
|
|
|
|
|
|
m_bIsPlay = FALSE;
|
|
|
|
|
m_bPauseSliderReflect = FALSE;
|
|
|
|
|
m_bService = FALSE; // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>º<EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
m_bTransParent = FALSE; // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>²<EFBFBD><EFBFBD><CDB8>
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CShowReplayDlg::~CShowReplayDlg()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CShowReplayDlg::DoDataExchange(CDataExchange* pDX)
|
|
|
|
|
{
|
|
|
|
|
CDialogEx::DoDataExchange(pDX);
|
|
|
|
|
DDX_Control(pDX, IDC_SLIDER_REPLAYRATIO, m_SliderReplayRatio);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CShowReplayDlg, CDialogEx)
|
|
|
|
|
ON_BN_CLICKED(IDC_BTN_OPENFILE, &CShowReplayDlg::OnBnClickedBtnOpenfile)
|
|
|
|
|
ON_BN_CLICKED(IDC_BTN_FILEPLAYPAUSE, &CShowReplayDlg::OnBnClickedBtnFileplaypause)
|
|
|
|
|
ON_BN_CLICKED(IDC_BTN_FILESTOP, &CShowReplayDlg::OnBnClickedBtnFilestop)
|
|
|
|
|
ON_BN_CLICKED(IDC_BTN_FILESLOW, &CShowReplayDlg::OnBnClickedBtnFileslow)
|
|
|
|
|
ON_BN_CLICKED(IDC_BTN_FILEFAST, &CShowReplayDlg::OnBnClickedBtnFilefast)
|
|
|
|
|
ON_CBN_SELCHANGE(IDC_COMBOX_PLAYTYPE, &CShowReplayDlg::OnCbnSelchangeComboxPlaytype)
|
|
|
|
|
ON_WM_DESTROY()
|
|
|
|
|
ON_MESSAGE(WM_BITMAPSLIDER_MOVING, OnBitmapSliderMoving)
|
|
|
|
|
ON_MESSAGE(WM_RETURN_PAYLOAD_TYPE_WARNING, &CShowReplayDlg::ReturnPayloadTypeWarning)
|
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// CShowReplayDlg <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
BOOL CShowReplayDlg::PreTranslateMessage(MSG* pMsg)
|
|
|
|
|
{
|
|
|
|
|
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>ר<EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
if (pMsg->message == WM_KEYDOWN)
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>ESC<53>ͻس<CDBB><D8B3><EFBFBD>
|
|
|
|
|
if (pMsg->wParam == VK_ESCAPE || pMsg->wParam == VK_RETURN)
|
|
|
|
|
{
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
// F1<46><31><EFBFBD><EFBFBD><EFBFBD>ơ<EFBFBD><C6A1><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>ơ<EFBFBD><C6A1><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>ʵ/<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
if (pMsg->wParam == VK_F1)
|
|
|
|
|
{
|
|
|
|
|
// <20>رմ<D8B1><D5B4><EFBFBD>
|
|
|
|
|
OnOK();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return CDialogEx::PreTranslateMessage(pMsg);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CShowReplayDlg::OnInitDialog()
|
|
|
|
|
{
|
|
|
|
|
CDialogEx::OnInitDialog();
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>öԻ<C3B6><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
SetWindowText(g_str_TitleReplay);
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
GetDlgItem(IDC_STATIC_HF_FILE_PATH) -> SetWindowText(g_str_FilePath);
|
|
|
|
|
//<2F><><EFBFBD>ûطŽ<D8B7><C5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
m_SliderReplayRatio.SetBitmapChannel( IDB_MP_CHANNEL, IDB_MP_CHANNEL_ACTIVE );
|
|
|
|
|
m_SliderReplayRatio.SetBitmapThumb( IDB_MP_THUMB, IDB_MP_THUMB_ACTIVE, TRUE );
|
|
|
|
|
m_SliderReplayRatio.DrawFocusRect( FALSE );
|
|
|
|
|
m_SliderReplayRatio.SetMargin( 2, 3, 2, 0 );
|
|
|
|
|
m_SliderReplayRatio.SetRange(0, 5000);
|
|
|
|
|
m_SliderReplayRatio.SetPos(0);
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ھ<EFBFBD><DABE><EFBFBD>
|
|
|
|
|
g_ReplayDlgHwnd = GetSafeHwnd();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>ģʽ
|
|
|
|
|
|
|
|
|
|
((CComboBox*)GetDlgItem(IDC_COMBOX_PLAYTYPE))->AddString("<EFBFBD>ط<EFBFBD>");
|
|
|
|
|
((CComboBox*)GetDlgItem(IDC_COMBOX_PLAYTYPE))->AddString("ʵʱ");
|
|
|
|
|
|
|
|
|
|
((CComboBox*)GetDlgItem(IDC_COMBOX_PLAYTYPE))->SetCurSel(1);
|
|
|
|
|
|
|
|
|
|
OnCbnSelchangeComboxPlaytype();
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ý<EFBFBD><C3BD>水ť
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
m_Btn_OpenFile.SubclassDlgItem(IDC_BTN_OPENFILE, this);
|
|
|
|
|
m_Btn_OpenFile.SetIcon(IDI_ICON_OPENFILE);
|
|
|
|
|
m_Btn_OpenFile.DrawTransparent(TRUE);
|
|
|
|
|
m_Btn_OpenFile.SetTooltipText("<EFBFBD>ļ<EFBFBD>");
|
|
|
|
|
m_Btn_OpenFile.DrawBorder(FALSE);
|
|
|
|
|
|
|
|
|
|
// <20><>ʼ/<2F><>ͣ
|
|
|
|
|
m_Btn_PlayPause.SubclassDlgItem(IDC_BTN_FILEPLAYPAUSE, this);
|
|
|
|
|
m_Btn_PlayPause.SetIcon(IDI_ICON_PLAY);
|
|
|
|
|
m_Btn_PlayPause.DrawTransparent(TRUE);
|
|
|
|
|
m_Btn_PlayPause.SetTooltipText("<EFBFBD><EFBFBD>ʼ/<2F><>ͣ");
|
|
|
|
|
m_Btn_PlayPause.DrawBorder(FALSE);
|
|
|
|
|
|
|
|
|
|
// ֹͣ
|
|
|
|
|
m_Btn_Stop.SubclassDlgItem(IDC_BTN_FILESTOP, this);
|
|
|
|
|
m_Btn_Stop.SetIcon(IDI_ICON_STOP);
|
|
|
|
|
m_Btn_Stop.DrawTransparent(TRUE);
|
|
|
|
|
m_Btn_Stop.SetTooltipText("ֹͣ");
|
|
|
|
|
m_Btn_Stop.DrawBorder(FALSE);
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>
|
|
|
|
|
m_Btn_SpeedUp.SubclassDlgItem(IDC_BTN_FILEFAST, this);
|
|
|
|
|
m_Btn_SpeedUp.SetIcon(IDI_ICON_SPEEDUP);
|
|
|
|
|
m_Btn_SpeedUp.DrawTransparent(TRUE);
|
|
|
|
|
m_Btn_SpeedUp.SetTooltipText("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|
|
|
|
m_Btn_SpeedUp.DrawBorder(FALSE);
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>
|
|
|
|
|
m_Btn_SpeedDown.SubclassDlgItem(IDC_BTN_FILESLOW, this);
|
|
|
|
|
m_Btn_SpeedDown.SetIcon(IDI_ICON_SPEEDDOWN);
|
|
|
|
|
m_Btn_SpeedDown.DrawTransparent(TRUE);
|
|
|
|
|
m_Btn_SpeedDown.SetTooltipText("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|
|
|
|
m_Btn_SpeedDown.DrawBorder(FALSE);
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ò<EFBFBD><C3B2>ű<EFBFBD><C5B1>ʳ<EFBFBD>ʼֵ
|
|
|
|
|
GetDlgItem(IDC_STATIC_REPLAY_RATIO)->SetWindowText(_T("0%"));
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20>ط<F2BFAABB><D8B7><EFBFBD>Ƶ<EFBFBD>ļ<EFBFBD>
|
|
|
|
|
void CShowReplayDlg::OnBnClickedBtnOpenfile()
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ
|
|
|
|
|
OnBnClickedBtnFilestop();
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
|
|
|
|
CFileDialog Dialog(
|
|
|
|
|
TRUE,
|
|
|
|
|
NULL,
|
|
|
|
|
NULL,
|
|
|
|
|
OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY,
|
|
|
|
|
_T("Video Files (*.tx) |*.tx| All Files (*.*) |*.*||"),
|
|
|
|
|
NULL);
|
|
|
|
|
Dialog.m_ofn.lpstrTitle = _T("Open Files");
|
|
|
|
|
|
|
|
|
|
if (Dialog.DoModal()!=IDOK)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (m_bIsPlay == FALSE)
|
|
|
|
|
{
|
|
|
|
|
m_HFfilePath = Dialog.GetPathName();
|
|
|
|
|
|
|
|
|
|
// <20><>ʾ<EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
|
|
|
|
|
GetDlgItem(IDC_STATIC_HF_FILE_PATH)->SetWindowText(g_str_FilePath + m_HFfilePath);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD>嶨ʱ<E5B6A8><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
void CShowReplayDlg::StartTimer()
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TimerPlayFunc<6E><63><EFBFBD>̶<EFBFBD><CCB6><EFBFBD>ʽ<EFBFBD><CABD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>TimerPlayFunc
|
|
|
|
|
m_TimerID = timeSetEvent(m_TimerPeriod, 1, TimerPlayFunc, (DWORD_PTR)this, TIME_PERIODIC);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//ֹͣ<CDA3><D6B9>ʱ<EFBFBD><CAB1>
|
|
|
|
|
void CShowReplayDlg::StopTimer()
|
|
|
|
|
{
|
|
|
|
|
if (m_TimerID != 0)
|
|
|
|
|
{
|
|
|
|
|
timeKillEvent(m_TimerID);
|
|
|
|
|
m_TimerID = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ż<EFBFBD><C5BC><EFBFBD>ͣ<EFBFBD><CDA3>Ƶ
|
|
|
|
|
void CShowReplayDlg::OnBnClickedBtnFileplaypause()
|
|
|
|
|
{
|
|
|
|
|
if (m_bFileOpen == FALSE)
|
|
|
|
|
{
|
|
|
|
|
// <20><>ʾ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ݵ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC>ļ<EFBFBD>
|
|
|
|
|
if (m_ReplayFile.Open(m_HFfilePath, CFile::modeRead) == TRUE)
|
|
|
|
|
{
|
|
|
|
|
m_bFileOpen = TRUE;
|
|
|
|
|
|
|
|
|
|
m_FileInfo.FileTotalLen = m_ReplayFile.GetLength(); // <20><>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
m_FileInfo.curFilePos = 0; //<2F><>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>Ϊ0
|
|
|
|
|
m_FileInfo.FrameLen = 1024;//1024; //<2F>趨<EFBFBD><E8B6A8>ȡһ֡<D2BB><D6A1><EFBFBD>ֽڴ<D6BD>С<EFBFBD><D0A1>10KB<4B><42>
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (m_bFileOpen == TRUE)
|
|
|
|
|
{
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>û<EFBFBD>в<EFBFBD><D0B2><EFBFBD>
|
|
|
|
|
if (m_bIsPlay == FALSE)
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ζ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><C2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9>ǰ<EFBFBD><C7B0>ʱ<EFBFBD><CAB1>
|
|
|
|
|
if (m_TimerID != 0)
|
|
|
|
|
{
|
|
|
|
|
timeKillEvent(m_TimerID);
|
|
|
|
|
m_TimerID = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
m_bIsPlay = TRUE;
|
|
|
|
|
//<2F>趨<EFBFBD>µĶ<C2B5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD>ȡÿһ֡<D2BB><D6A1><EFBFBD>в<EFBFBD><D0B2><EFBFBD>
|
|
|
|
|
StartTimer();
|
|
|
|
|
//GetDlgItem(IDC_BTN_FILEPLAYPAUSE)->SetWindowTextA("<22><>ͣ");
|
|
|
|
|
m_Btn_PlayPause.SetIcon(IDI_ICON_PAUSE);
|
|
|
|
|
}
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>ͣ
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (m_TimerID != 0)
|
|
|
|
|
{
|
|
|
|
|
timeKillEvent(m_TimerID);
|
|
|
|
|
m_TimerID = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
m_bIsPlay = FALSE;
|
|
|
|
|
g_bEOImgUpdate = FALSE;
|
|
|
|
|
g_bIRImgUpdate = FALSE;
|
|
|
|
|
//GetDlgItem(IDC_BTN_FILEPLAYPAUSE)->SetWindowTextA("<22><><EFBFBD><EFBFBD>");
|
|
|
|
|
m_Btn_PlayPause.SetIcon(IDI_ICON_PLAY);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
g_bReplayPlay = m_bIsPlay;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD>TimerPlayFunc<6E>е<EFBFBD><D0B5><EFBFBD>
|
|
|
|
|
void CShowReplayDlg::ReadAndPlay()
|
|
|
|
|
{
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3>Ӧ
|
|
|
|
|
if(m_bIsPlay == TRUE && m_bPauseSliderReflect == FALSE)
|
|
|
|
|
{
|
|
|
|
|
if (m_bFileOpen == FALSE)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int readLen = 0;
|
|
|
|
|
//ʱ<><CAB1><EFBFBD>趨֮<E8B6A8><D6AE><EFBFBD><EFBFBD>ÿ<EFBFBD>ε<EFBFBD><CEB5>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>˳<EFBFBD>ζ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
readLen = m_ReplayFile.Read(m_FileInfo.Buffer, m_FileInfo.FrameLen);
|
|
|
|
|
|
|
|
|
|
//<2F><>ǰ<EFBFBD>ļ<EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
m_FileInfo.curFilePos += readLen;
|
|
|
|
|
|
|
|
|
|
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7>ѵ<EFBFBD><D1B5>ļ<EFBFBD><C4BC><EFBFBD>β
|
|
|
|
|
if(m_FileInfo.curFilePos < m_FileInfo.FileTotalLen)
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
|
|
|
|
|
ReplayInputData(m_FileInfo.Buffer, readLen);
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Űٷֱ<D9B7>
|
|
|
|
|
double ratio = 0.0;
|
|
|
|
|
ratio = m_FileInfo.curFilePos * 1.0 / m_FileInfo.FileTotalLen;
|
|
|
|
|
int rangeMax = m_SliderReplayRatio.GetRangeMax();
|
|
|
|
|
int currentPos = static_cast<int>(ratio * rangeMax + 0.5); // int<6E><74><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0.5<EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>֤ȡ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
m_bPauseSliderReflect = TRUE; // <20><>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
|
|
|
|
|
m_SliderReplayRatio.SetPos(currentPos);
|
|
|
|
|
CString str;
|
|
|
|
|
str.Format("%.1f", ratio * 100);
|
|
|
|
|
str = str + "%";
|
|
|
|
|
/* UpdateData(TRUE);*/
|
|
|
|
|
GetDlgItem(IDC_STATIC_REPLAY_RATIO)->SetWindowText(str);
|
|
|
|
|
m_bPauseSliderReflect = FALSE; // <20><><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٷֱ<D9B7><D6B1><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ûطŽ<D8B7><C5BD><EFBFBD>
|
|
|
|
|
void CShowReplayDlg::SetFileReplayRatio(double ratio)
|
|
|
|
|
{
|
|
|
|
|
if (ratio < 0 || ratio > 1)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (m_bFileOpen == TRUE)
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>С
|
|
|
|
|
m_FileInfo.curFilePos = ULONGLONG(m_FileInfo.FileTotalLen * ratio);
|
|
|
|
|
m_ReplayFile.Seek(LONGLONG(m_FileInfo.curFilePos), CFile::begin);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20>϶<EFBFBD><CFB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
|
|
|
|
|
LRESULT CShowReplayDlg::OnBitmapSliderMoving(WPARAM wParam, LPARAM lParam)
|
|
|
|
|
{
|
|
|
|
|
if (m_bPauseSliderReflect == FALSE)
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3>Ӧ
|
|
|
|
|
m_bPauseSliderReflect = TRUE;
|
|
|
|
|
// ȷ<><C8B7><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>ȡ<EFBFBD>ļ<EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
int pos = m_SliderReplayRatio.GetPos();
|
|
|
|
|
int rangeMax = m_SliderReplayRatio.GetRangeMax();
|
|
|
|
|
double ratio = pos * 1.0 / rangeMax;
|
|
|
|
|
SetFileReplayRatio(ratio);
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>Ӧ
|
|
|
|
|
m_bPauseSliderReflect = FALSE;
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
|
|
|
|
|
void CShowReplayDlg::OnBnClickedBtnFilestop()
|
|
|
|
|
{
|
|
|
|
|
if (g_bWorkMode == true)
|
|
|
|
|
{
|
|
|
|
|
StopTimer();
|
|
|
|
|
|
|
|
|
|
// <20><>ȡͼ<C8A1><EFBFBD><F1BBBAB4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
if (m_bFileOpen == TRUE)
|
|
|
|
|
{
|
|
|
|
|
m_ReplayFile.Close();
|
|
|
|
|
m_bFileOpen = FALSE;
|
|
|
|
|
m_FileInfo.ClearStru();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
m_bIsPlay = FALSE;
|
|
|
|
|
|
|
|
|
|
Sleep(20);
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>Ž<EFBFBD><C5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|
|
|
|
m_SliderReplayRatio.SetPos(0);
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
GetDlgItem(IDC_STATIC_REPLAY_RATIO)->SetWindowText(_T("0%"));
|
|
|
|
|
//GetDlgItem(IDC_BTN_FILEPLAYPAUSE)->SetWindowTextA("<22><><EFBFBD><EFBFBD>");
|
|
|
|
|
m_Btn_PlayPause.SetIcon(IDI_ICON_PLAY);
|
|
|
|
|
|
|
|
|
|
// ::PostMessage(g_mainDlgHwnd, WM_SHOW_STOP, 0, 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>١<EFBFBD><D9A1><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>趨ÿ֡<C3BF>ֽڵĴ<DAB5>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2>ŵĿ<C5B5><C4BF><EFBFBD>
|
|
|
|
|
void CShowReplayDlg::OnBnClickedBtnFileslow()
|
|
|
|
|
{
|
|
|
|
|
if(m_bFileOpen == TRUE && m_bIsPlay == TRUE)
|
|
|
|
|
{
|
|
|
|
|
if ((m_FileInfo.FrameLen - 1024) >= g_MinReadLen)
|
|
|
|
|
{
|
|
|
|
|
m_FileInfo.FrameLen = m_FileInfo.FrameLen - 1024;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
m_FileInfo.FrameLen = g_MinReadLen;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>١<EFBFBD><D9A1><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>趨ÿ֡<C3BF>ֽڵĴ<DAB5>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2>ŵĿ<C5B5><C4BF><EFBFBD>
|
|
|
|
|
void CShowReplayDlg::OnBnClickedBtnFilefast()
|
|
|
|
|
{
|
|
|
|
|
if(m_bFileOpen == TRUE && m_bIsPlay == TRUE)
|
|
|
|
|
{
|
|
|
|
|
if (m_FileInfo.FrameLen + 1024 <= g_MaxReadLen)
|
|
|
|
|
{
|
|
|
|
|
m_FileInfo.FrameLen = m_FileInfo.FrameLen + 1024;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
m_FileInfo.FrameLen = g_MaxReadLen;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CShowReplayDlg::OnCbnSelchangeComboxPlaytype()
|
|
|
|
|
{
|
|
|
|
|
int state = ((CComboBox*)GetDlgItem(IDC_COMBOX_PLAYTYPE))->GetCurSel();
|
|
|
|
|
// <20><>Ƶ<EFBFBD>طŹ<D8B7><C5B9><EFBFBD>
|
|
|
|
|
if (state == 0)
|
|
|
|
|
{
|
|
|
|
|
g_bWorkMode = true; // <20>ط<EFBFBD>
|
|
|
|
|
|
|
|
|
|
GetDlgItem(IDC_BTN_OPENFILE)->EnableWindow(TRUE);
|
|
|
|
|
GetDlgItem(IDC_BTN_FILEPLAYPAUSE)->EnableWindow(TRUE);
|
|
|
|
|
GetDlgItem(IDC_BTN_FILESTOP)->EnableWindow(TRUE);
|
|
|
|
|
GetDlgItem(IDC_BTN_FILESLOW)->EnableWindow(TRUE);
|
|
|
|
|
GetDlgItem(IDC_BTN_FILEFAST)->EnableWindow(TRUE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
// ֹͣ<CDA3>ļ<EFBFBD><C4BC>ط<EFBFBD>
|
|
|
|
|
OnBnClickedBtnFilestop();
|
|
|
|
|
|
|
|
|
|
GetDlgItem(IDC_BTN_OPENFILE)->EnableWindow(FALSE);
|
|
|
|
|
GetDlgItem(IDC_BTN_FILEPLAYPAUSE)->EnableWindow(FALSE);
|
|
|
|
|
GetDlgItem(IDC_BTN_FILESTOP)->EnableWindow(FALSE);
|
|
|
|
|
GetDlgItem(IDC_BTN_FILESLOW)->EnableWindow(FALSE);
|
|
|
|
|
GetDlgItem(IDC_BTN_FILEFAST)->EnableWindow(FALSE);
|
|
|
|
|
|
|
|
|
|
g_bWorkMode = false; // ʵʱ
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
void CShowReplayDlg::OnDestroy()
|
|
|
|
|
{
|
|
|
|
|
CDialogEx::OnDestroy();
|
|
|
|
|
|
|
|
|
|
// ֹͣ<CDA3>ļ<EFBFBD><C4BC>ط<EFBFBD>
|
|
|
|
|
OnBnClickedBtnFilestop();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20>жϽ<D0B6><CFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD><D0BA><EFBFBD> <20><><EFBFBD><EFBFBD>0˵<30><CBB5>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
DWORD CShowReplayDlg::GetProcessIdFromName(LPCTSTR name)
|
|
|
|
|
{
|
|
|
|
|
PROCESSENTRY32 pe;
|
|
|
|
|
DWORD id = 0;
|
|
|
|
|
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
|
|
|
|
|
pe.dwSize = sizeof(PROCESSENTRY32);
|
|
|
|
|
if( !Process32First(hSnapshot,&pe) )
|
|
|
|
|
return 0;
|
|
|
|
|
while(1)
|
|
|
|
|
{
|
|
|
|
|
pe.dwSize = sizeof(PROCESSENTRY32);
|
|
|
|
|
if( Process32Next(hSnapshot,&pe)==FALSE )
|
|
|
|
|
break;
|
|
|
|
|
if(strcmp(pe.szExeFile,name) == 0)
|
|
|
|
|
{
|
|
|
|
|
id = pe.th32ProcessID;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
CloseHandle(hSnapshot);
|
|
|
|
|
return id;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LRESULT CShowReplayDlg::ReturnPayloadTypeWarning(WPARAM wParam, LPARAM lParam)
|
|
|
|
|
{
|
|
|
|
|
UpdateData(FALSE);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|