// TimeSliderDialog.cpp : implementation file // #include "stdafx.h" #include "dxwndhost.h" #include "TimeSliderDialog.h" // CTimeSliderDialog dialog IMPLEMENT_DYNAMIC(CTimeSliderDialog, CDialog) CTimeSliderDialog::CTimeSliderDialog(CWnd* pParent /*=NULL*/) : CDialog(CTimeSliderDialog::IDD, pParent) { LoadString(AfxGetResourceHandle(), DXW_STRING_IDLE, IdleString, sizeof(IdleString)); } CTimeSliderDialog::~CTimeSliderDialog() { MessageBoxEx(0, "Time Slider destructor", "Warning", MB_OK | MB_ICONEXCLAMATION, NULL); //CTimeSliderDialog::OnOK(); // kill timer.... } void CTimeSliderDialog::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CTargetDlg) DDX_Slider(pDX, IDC_TIMESLIDER, i_TimeSlider); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CTimeSliderDialog, CDialog) ON_WM_TIMER() END_MESSAGE_MAP() #define IDTimeSiderTIMER 2 // CTimeSliderDialog message handlers void CTimeSliderDialog::OnTimer(UINT_PTR nIDEvent) { CSliderCtrl *Slider; CStatic *Text; char sMsg[81]; static int iLastPos=-1; extern char *GetTSCaption(int); Slider=(CSliderCtrl *)this->GetDlgItem(IDC_TIMESLIDER); Text=(CStatic *)this->GetDlgItem(IDC_TIMESPEED); CDialog::OnTimer(nIDEvent); i_TimeSlider=Slider->GetPos(); if(GetHookStatus(NULL)!=DXW_RUNNING) { Slider->SetPos(0); Text->SetWindowTextA(IdleString); return; } if(i_TimeSlider==iLastPos){ // no change, check for keyboard input changes i_TimeSlider=GetHookInfo()->TimeShift; if(i_TimeSlider != iLastPos) Slider->SetPos(i_TimeSlider); } else { // slider position changed, set the new value if (i_TimeSlider < -8) i_TimeSlider=-8; if (i_TimeSlider > 8) i_TimeSlider= 8; GetHookInfo()->TimeShift=i_TimeSlider; } iLastPos = i_TimeSlider; sprintf(sMsg, "Time speed %s", GetTSCaption(i_TimeSlider)); Text->SetWindowTextA(sMsg); } BOOL CTimeSliderDialog::OnInitDialog() { CSliderCtrl *Slider; CDialog::OnInitDialog(); Slider=(CSliderCtrl *)this->GetDlgItem(IDC_TIMESLIDER); Slider->SetRange(-8, +8, 0); Slider->SetTicFreq(1); Slider->SetPos(GetHookInfo()->TimeShift); SetTimer(IDTimeSiderTIMER, 1000, NULL); // TODO: Add extra initialization here return TRUE; // return TRUE unless you set the focus to a control } void CTimeSliderDialog::OnOK() { // TODO: Add your specialized code here and/or call the base class // stop timer // MessageBoxEx(0, "Stopping Time Slider dialog", "Warning", MB_OK | MB_ICONEXCLAMATION, NULL); KillTimer(IDTimeSiderTIMER); GetHookInfo()->TimeShift=i_TimeSlider; CDialog::OnOK(); }