www.pudn.com > ITSever.rar > clientTestDlg.cpp
// clientTestDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "clientTest.h"
#include "clientTestDlg.h"
#include ".\clienttestdlg.h"
#include "client.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#define HOSTLEN 256
#define WM_DISCONNECT WM_USER+1102
char hstr[2];
char mstr[2];
char sstr[2];
char strhost[HOSTLEN];
FILE *fp=NULL;
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// 对话框数据
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
// CclientTestDlg 对话框
CclientTestDlg::CclientTestDlg(CWnd* pParent /*=NULL*/)
: CDialog(CclientTestDlg::IDD, pParent)
, m_URLvalue(_T(""))
{
//int ret=InitStreamClientLib();
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_totaltime=-1;
m_opened=-1;
oldtime=0;
m_delay=0;
}
void CclientTestDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_SLIDER1, m_slider);
DDX_Text(pDX, IDC_EDIT1, m_URLvalue);
DDX_Control(pDX, IDC_SLIDER2, m_volume);
DDX_Control(pDX, IDC_COMBO1, m_TransMethod);
DDX_Control(pDX, IDC_BRI_SLIDER, m_brislider);
DDX_Control(pDX, IDC_CON_SLIDER, m_conslider);
DDX_Control(pDX, IDC_SAT_SLIDER, m_satslider);
DDX_Control(pDX, IDC_HUE_SLIDER, m_hueslider);
}
BEGIN_MESSAGE_MAP(CclientTestDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BUTTON7, OnBtnPlay)
ON_BN_CLICKED(IDC_BUTTON8, OnBtnPause)
ON_BN_CLICKED(IDC_BUTTON5, OnBtnResume)
ON_BN_CLICKED(IDC_BUTTON6, OnBtnStop)
ON_WM_HSCROLL()
ON_WM_CLOSE()
ON_WM_TIMER()
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_BN_CLICKED(IDC_BUTTON1, OnBnSpeed)
ON_BN_CLICKED(IDC_BUTTON3, OnBnSlow)
ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER1, OnNMReleasedcaptureSlider1)
ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_BRI_SLIDER, OnNMReleasedcaptureBriSlider)
ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_CON_SLIDER, OnNMReleasedcaptureConSlider)
ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SAT_SLIDER, OnNMReleasedcaptureSatSlider)
ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_HUE_SLIDER, OnNMReleasedcaptureHueSlider)
ON_WM_NCLBUTTONUP()
END_MESSAGE_MAP()
// CclientTestDlg 消息处理程序
BOOL CclientTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 将\“关于...\”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
// m_playhand=NULL;
InitParameter();
RefreshButton(0);
m_volume.SetRange(0,65535);
m_TransMethod.ResetContent();
m_TransMethod.AddString("TCP");
m_TransMethod.AddString("UDP");
m_TransMethod.SetCurSel(0);
m_brislider.SetRange(0,255);
m_conslider.SetRange(0,255);
m_satslider.SetRange(0,255);
m_hueslider.SetRange(0,255);
m_brislider.SetTicFreq(10);
m_conslider.SetTicFreq(10);
m_satslider.SetTicFreq(10);
m_hueslider.SetTicFreq(10);
m_brislider.SetPos(0);
m_conslider.SetPos(0);
m_satslider.SetPos(0);
m_hueslider.SetPos(0);
GetDlgItem(IDC_STATIC_VOLUME)->SetWindowText(m_strsrc.fGetString(IDS_STATIC_VOLUME));
GetDlgItem(IDC_STATIC_URL)->SetWindowText(m_strsrc.fGetString(IDS_STATIC_URL));
GetDlgItem(IDC_STATIC_TRANSFERMETHOD)->SetWindowText(m_strsrc.fGetString(IDS_STATIC_TRANSFERMETHOD));
GetDlgItem(IDC_VIDEOPARAMADJUST)->SetWindowText(m_strsrc.fGetString(IDS_VIDEOPARAMADJUST));
GetDlgItem(IDC_STATIC_BRI)->SetWindowText(m_strsrc.fGetString(IDS_STATIC_BRI));
GetDlgItem(IDC_STATIC_CON)->SetWindowText(m_strsrc.fGetString(IDS_STATIC_CON));
GetDlgItem(IDC_STATIC_SAT)->SetWindowText(m_strsrc.fGetString(IDS_STATIC_SAT));
GetDlgItem(IDC_STATIC_HUE)->SetWindowText(m_strsrc.fGetString(IDS_STATIC_HUE));
GetDlgItem(IDC_STATIC_PTZCONTROL)->SetWindowText(m_strsrc.fGetString(IDS_STATIC_PTZCONTROL));
GetDlgItem(IDC_MOVEUP)->SetWindowText(m_strsrc.fGetString(IDS_MOVEUP));
GetDlgItem(IDC_MOVEDOWN)->SetWindowText(m_strsrc.fGetString(IDS_MOVEDOWN));
GetDlgItem(IDC_MOVELEFT)->SetWindowText(m_strsrc.fGetString(IDS_MOVELEFT));
GetDlgItem(IDC_MOVERIGHT)->SetWindowText(m_strsrc.fGetString(IDS_MOVERIGHT));
SetWindowText(m_strsrc.fGetString(IDS_STREAMMEDIACLIENT));
return TRUE; // 除非设置了控件的焦点,否则返回 TRUE
}
void CclientTestDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// 如果向对话框添加最小化按钮,则需要下面的代码
// 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
// 这将由框架自动完成。
void CclientTestDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0);
// 使图标在工作矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
//当用户拖动最小化窗口时系统调用此函数取得光标显示。
HCURSOR CclientTestDlg::OnQueryDragIcon()
{
return static_cast(m_hIcon);
}
/**************************************************************
***************************************************************
Buttons
****************************************************************/
int CALLBACK DoRecord(int sid, int iusrdata, int idatatype, char* pdata, int ilen)
{
if(!fp)
{
fp=fopen("c:\\1.264","wb");
}
fwrite(pdata,1,ilen,fp);
return 0;
}
char headbuf[1024];
void CclientTestDlg::OnBtnPlay()
{
/*
rtsp://192.0.0.84/192.0.0.94:5050:[hik_card]:1:0:123:w/av_stream
rtsp://192.0.0.12/stream.264
rtsp://192.0.0.12/192.0.1.200:8000:[hik_hc]:0:0:admin:12345/av_stream
rtsp://192.0.0.12:556/192.0.0.145/192.0.1.200:8000:[hik_hc]:0:0:admin:12345/av_stream
rtsp://192.0.0.12/d:/流媒体/hikstream/files/stream.264
rtsp://192.0.0.145/192.0.0.94:5050:[hik_card]:1:0:123:w/av_stream
*/
int nRet;
if(m_hSession>=0)
{
nRet=HIKS_Stop(m_hSession);
m_totaltime=-1;
m_hSession = -1;
m_opened=-1;
RefreshButton(0);
DisableSlider();
}
HWND hWnd = GetDlgItem(IDC_STATIC_SHOW)->GetSafeHwnd();
int sel=m_TransMethod.GetCurSel();
if(sel==0)
m_hSession = HIKS_CreatePlayer(this,hWnd,NULL);//DoRecord//hWnd
else
m_hSession = HIKS_CreatePlayer(this,hWnd,NULL,NULL,1);//DoRecord//hWnd
if ( m_hSession != -1 )
{
UpdateData(true);
nRet = HIKS_OpenURL(m_hSession,m_URLvalue.GetBuffer(0),0);
if(nRet==1)
{
RefreshButton(1);
}
else
{
HIKS_Destroy(m_hSession);
m_hSession=-1;
m_opened=-1;
TRACE("open url failed!\n");
RefreshButton(0);
return;
}
}
else
{
TRACE("Create Player failed!\n");
RefreshButton(0);
return;
}
while(m_opened<0) Sleep(100);
if(m_opened<=0)
{
HIKS_Destroy(m_hSession);
m_hSession=-1;
m_opened=-1;
TRACE("open url wait return failed!\n");
RefreshButton(0);
return ;
}
//return ;
RefreshButton(1);
int ibri=0,icon=0,isat=0,ihue=0;
int ret=HIKS_GetVideoParams(m_hSession,&ibri,&icon,&isat,&ihue);
if(!ret)
{
m_brislider.SetPos(ibri);
m_conslider.SetPos(icon);
m_satslider.SetPos(isat);
m_hueslider.SetPos(ihue);
}
nRet=HIKS_Play(m_hSession);
if(nRet==1)
{
EnableSlider();
if(m_totaltime>=0)
{
KillTimer(1);
SetTimer(1,1000,NULL);
}
}
else
{
HIKS_Stop(m_hSession);
m_hSession=-1;
m_opened=-1;
TRACE("play url failed!\n");
RefreshButton(0);
return ;
}
}
void CclientTestDlg::OnBtnPause()
{
int nRet=HIKS_Pause(m_hSession);
if(nRet==1)
{
RefreshButton(2);
}
else
{
TRACE("pause failed!\n");
return;
}
}
void CclientTestDlg::OnBtnResume()
{
int nRet=HIKS_Resume(m_hSession);
if(nRet==1)
{
RefreshButton(3);
}
else
{
TRACE("resume failed!\n");
return;
}
}
void CclientTestDlg::OnBtnStop()
{
KillTimer(1);
int nRet=HIKS_Stop(m_hSession);
if(nRet==0)
{
m_totaltime=-1;
m_hSession = -1;
m_opened=-1;
RefreshButton(0);
DisableSlider();
}
else
{
TRACE("stop failed!\n");
return;
}
}
void CclientTestDlg::OnBnSpeed()
{
// TODO: 在此添加控件通知处理程序代码
int nRet=HIKS_ChangeRate(m_hSession,2);
if(nRet)
{
TRACE("speed failed!\n");
return;
}
}
void CclientTestDlg::OnBnSlow()
{
// TODO: 在此添加控件通知处理程序代码
int nRet=HIKS_ChangeRate(m_hSession,-2);
if(nRet)
{
TRACE("slow failed!\n");
return;
}
}
/**************************************************************
***************************************************************
CallBacks
****************************************************************/
int CclientTestDlg::OnPresentationClosed()
{
return 0;
}
int CclientTestDlg::OnPresentationOpened(int success)
{
m_opened=success;
return 0;
}
int CclientTestDlg::OnPreSeek( unsigned long uOldTime, unsigned long uNewTime )
{
return 0;
}
int CclientTestDlg::OnPostSeek( unsigned long uOldTime, unsigned long uNewTime )
{
return 0;
}
int CclientTestDlg::OnPosLength( unsigned long nLength )
{
m_totaltime=nLength;
return 0;
}
int CclientTestDlg::OnStop()
{
return 0;
}
int CclientTestDlg::OnBegin( unsigned long uTime )
{
return 0;
}
int CclientTestDlg::OnRandomBegin( unsigned long uTime )
{
return 0;
}
int CclientTestDlg::OnPause( unsigned long uTime )
{
return 0;
}
int CclientTestDlg::OnContacting( const char* pszHost )
{
int len=strlen(pszHost);
if(len>HOSTLEN-1)
{
AfxMessageBox("host name is to long!");
return 0;
}
else
{
memcpy(strhost,pszHost,len);
strhost[len]='\0';
}
return 0;
}
int CclientTestDlg::OnPutErrorMsg( const char* pError )
{
TRACE(pError);
TRACE("\n");
return 0;
}
int CclientTestDlg::OnBuffering( unsigned int uFlag, unsigned short uPercentComplete )
{
return 0;
}
int CclientTestDlg::OnChangeRate(int flag)
{
m_speeded=true;
return 0;
}
int CclientTestDlg::OnDisconnect()
{
OutputDebugString(">>>>>>>enter ondisconnect!\n");
PostMessage(WM_DISCONNECT,0,0);
return 0;
}
/**************************************************************
***************************************************************
Events
****************************************************************/
void CclientTestDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
KillTimer(1);
CSliderCtrl* slider=(CSliderCtrl*) pScrollBar;
if(slider==&m_volume)
{
HIKS_SetVolume(m_hSession,m_volume.GetPos());
}
else if(slider==&m_slider)
KillTimer(1);
__super::OnHScroll(nSBCode, nPos, pScrollBar);
}
void CclientTestDlg::OnClose()
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
// if(m_hSession != -1)
// {
// OnBtnStop();
// }
__super::OnClose();
}
void CclientTestDlg::OnTimer(UINT nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if(m_delay)
{
m_delay--;
return;
}
unsigned long utime;
CString str;
switch(nIDEvent)
{
case 1:
if(m_totaltime>=0)
{
if(!HIKS_GetCurTime(m_hSession,&utime))
{
if(utime!=oldtime)
{
m_slider.SetPos(utime);
GetDlgItem(IDC_PERCENT)->SetWindowText("");
str.Format("%s/%s",ConvertTime(utime).GetBuffer(0),ConvertTime(m_totaltime).GetBuffer(0));
GetDlgItem(IDC_TIMESHOW)->SetWindowText(str);
}
}
}
break;
default:
break;
}
__super::OnTimer(nIDEvent);
}
/**************************************************************
***************************************************************
SelfDefine
****************************************************************/
CString CclientTestDlg::ConvertTime(int time)
{
int hour=time/230400;
int minute=(time%230400)/3840;
int second=(time%3840)/64;
CString str="";
if(hour<10)
sprintf(hstr,"0%d",hour);
else
sprintf(hstr,"%d",hour);
if(minute<10)
sprintf(mstr,"0%d",minute);
else
sprintf(mstr,"%d",minute);
try
{
if(second<10)
sprintf(sstr,"0%d",second);
else
sprintf(sstr,"%d",second);
}
catch(...)
{
;
}
str.Format("%s:%s:%s",hstr,mstr,sstr);
return str;
}
int CclientTestDlg::InitParameter()
{
//m_URLvalue="rtsp://192.0.0.12:556/192.0.1.177/stream.264";
//m_URLvalue="rtsp://192.0.0.12/D:/流媒体/hikstream/files/stream.264";
//m_URLvalue="rtsp://192.0.0.12:556/192.0.0.12/D:/流媒体/hikstream/files/stream.264";
//m_URLvalue="rtsp://192.0.1.179/192.0.1.173:8000:HIK-DS8000HC:5:0:admin:12345/av_stream";
//m_URLvalue="rtsp://192.0.1.179:556/192.0.1.178/192.0.1.170:8000:HIK-DS8000HC:1:0:admin:12345/av_stream";
//m_URLvalue="rtsp://192.0.0.12:556/192.0.1.179/192.0.1.173:8000:HIK-DS8000HC:1:0:admin:12345/av_stream";
//m_URLvalue="rtsp://192.0.0.12:556/192.0.0.12/d:/stream9.264";
//m_URLvalue="rtsp://192.0.0.12:556/192.0.0.12/192.0.1.170:8000:HIK-DS8000HC:1:0:admin:12345/av_stream";
//m_URLvalue="rtsp://192.0.0.12/192.0.1.177:5050:HIK-Cards:0:0:123:w/av_stream";
//m_URLvalue="rtsp://192.0.0.12:556/192.0.0.12/hc_v32.264";
m_URLvalue="rtsp://192.0.0.12/192.0.1.173:8000:HIK-DS8000HC:1:0:admin:12345/av_stream";
UpdateData(false);
m_hSession=-1;
m_opened=-1;
m_speeded=false;
DisableSlider();
return 0;
}
int CclientTestDlg::DisableSlider()
{
GetDlgItem(IDC_TIMESHOW)->SetWindowText("");
GetDlgItem(IDC_CONNECTED)->SetWindowText("");
GetDlgItem(IDC_PERCENT)->SetWindowText("");
m_slider.SetPos(0);
m_slider.EnableWindow(0);
return 0;
}
int CclientTestDlg::EnableSlider()
{
CString str;
if(m_hSession>=0)
{
str.Format("connected to %s",strhost);
GetDlgItem(IDC_CONNECTED)->SetWindowText(str.GetBuffer(0));
GetDlgItem(IDC_PERCENT)->SetWindowText("");
if(m_totaltime<0)
{
GetDlgItem(IDC_TIMESHOW)->SetWindowText("");
m_slider.SetPos(0);
m_slider.EnableWindow(0);
}
else
{
str.Format("00:00:00/%s",ConvertTime(m_totaltime).GetBuffer(0));
GetDlgItem(IDC_TIMESHOW)->SetWindowText(str.GetBuffer(0));
m_slider.SetRange(0,m_totaltime);
m_slider.SetTicFreq(10);
m_slider.SetPos(0);
m_slider.EnableWindow(1);
}
}
return 0;
}
int CclientTestDlg::RefreshButton(int flag)
{
switch(flag)
{
case 0:
GetDlgItem(IDC_BUTTON7)->EnableWindow(1);
GetDlgItem(IDC_BUTTON8)->EnableWindow(0);
GetDlgItem(IDC_BUTTON5)->EnableWindow(0);
GetDlgItem(IDC_BUTTON6)->EnableWindow(0);
GetDlgItem(IDC_BUTTON1)->EnableWindow(0);
GetDlgItem(IDC_BUTTON3)->EnableWindow(0);
break;
case 1:
GetDlgItem(IDC_BUTTON7)->EnableWindow(0);
GetDlgItem(IDC_BUTTON6)->EnableWindow(1);
if(m_totaltime>=0)
{
GetDlgItem(IDC_BUTTON8)->EnableWindow(1);
GetDlgItem(IDC_BUTTON5)->EnableWindow(0);
GetDlgItem(IDC_BUTTON1)->EnableWindow(1);
GetDlgItem(IDC_BUTTON3)->EnableWindow(1);
}
break;
case 2:
GetDlgItem(IDC_BUTTON7)->EnableWindow(0);
GetDlgItem(IDC_BUTTON8)->EnableWindow(0);
GetDlgItem(IDC_BUTTON5)->EnableWindow(1);
GetDlgItem(IDC_BUTTON6)->EnableWindow(1);
GetDlgItem(IDC_BUTTON1)->EnableWindow(0);
GetDlgItem(IDC_BUTTON3)->EnableWindow(0);
break;
case 3:
GetDlgItem(IDC_BUTTON7)->EnableWindow(0);
GetDlgItem(IDC_BUTTON6)->EnableWindow(1);
if(m_totaltime>=0)
{
GetDlgItem(IDC_BUTTON8)->EnableWindow(1);
GetDlgItem(IDC_BUTTON5)->EnableWindow(0);
GetDlgItem(IDC_BUTTON1)->EnableWindow(1);
GetDlgItem(IDC_BUTTON3)->EnableWindow(1);
}
break;
default:
break;
}
return 0;
}
void CclientTestDlg::OnNMReleasedcaptureSlider1(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
CString str;
str.Format("%d%%",m_slider.GetPos()*100/m_totaltime);
GetDlgItem(IDC_PERCENT)->SetWindowText(str);
HIKS_GetCurTime(m_hSession,&oldtime);
m_delay=3;
HIKS_RandomPlay(m_hSession,m_slider.GetPos());
SetTimer(1,1000,NULL);
*pResult = 0;
}
void CclientTestDlg::OnNMReleasedcaptureBriSlider(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
int ret=HIKS_SetVideoParams(m_hSession,m_brislider.GetPos(),m_conslider.GetPos(),\
m_satslider.GetPos(),m_hueslider.GetPos());
if(ret)
AfxMessageBox("set video params failed!\n");
*pResult = 0;
}
void CclientTestDlg::OnNMReleasedcaptureConSlider(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
int ret=HIKS_SetVideoParams(m_hSession,m_brislider.GetPos(),m_conslider.GetPos(),\
m_satslider.GetPos(),m_hueslider.GetPos());
if(ret)
AfxMessageBox("set video params failed!\n");
*pResult = 0;
}
void CclientTestDlg::OnNMReleasedcaptureSatSlider(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
int ret=HIKS_SetVideoParams(m_hSession,m_brislider.GetPos(),m_conslider.GetPos(),\
m_satslider.GetPos(),m_hueslider.GetPos());
if(ret)
AfxMessageBox("set video params failed!\n");
*pResult = 0;
}
void CclientTestDlg::OnNMReleasedcaptureHueSlider(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
int ret=HIKS_SetVideoParams(m_hSession,m_brislider.GetPos(),m_conslider.GetPos(),\
m_satslider.GetPos(),m_hueslider.GetPos());
if(ret)
AfxMessageBox("set video params failed!\n");
*pResult = 0;
}
BOOL CclientTestDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
//TRACE("OKOKOK ENTER!\n");
HWND hwndup=GetDlgItem(IDC_MOVEUP)->GetSafeHwnd();
HWND hwnddown=GetDlgItem(IDC_MOVEDOWN)->GetSafeHwnd();
HWND hwndleft=GetDlgItem(IDC_MOVELEFT)->GetSafeHwnd();
HWND hwndright=GetDlgItem(IDC_MOVERIGHT)->GetSafeHwnd();
if(pMsg->hwnd==hwndup)
{
switch(pMsg->message)
{
case WM_LBUTTONDOWN:
if(HIKS_PTZControl(m_hSession,21,1,10,0,0))
TRACE("云台控制失败!\n");
break;
case WM_LBUTTONUP:
if(HIKS_PTZControl(m_hSession,21,0,0,0,0))
TRACE("云台控制失败!\n");
break;
default:
break;
}
}
else if(pMsg->hwnd==hwnddown)
{
switch(pMsg->message)
{
case WM_LBUTTONDOWN:
if(HIKS_PTZControl(m_hSession,22,1,10,0,0))
TRACE("云台控制失败!\n");
break;
case WM_LBUTTONUP:
if(HIKS_PTZControl(m_hSession,22,0,0,0,0))
TRACE("云台控制失败!\n");
break;
default:
break;
}
}
else if(pMsg->hwnd==hwndleft)
{
switch(pMsg->message)
{
case WM_LBUTTONDOWN:
if(HIKS_PTZControl(m_hSession,23,1,10,0,0))
TRACE("云台控制失败!\n");
break;
case WM_LBUTTONUP:
if(HIKS_PTZControl(m_hSession,23,0,0,0,0))
TRACE("云台控制失败!\n");
break;
default:
break;
}
}
else if(pMsg->hwnd==hwndright)
{
switch(pMsg->message)
{
case WM_LBUTTONDOWN:
if(HIKS_PTZControl(m_hSession,24,1,10,0,0))
TRACE("云台控制失败!\n");
break;
case WM_LBUTTONUP:
if(HIKS_PTZControl(m_hSession,24,0,0,0,0))
TRACE("云台控制失败!\n");
break;
default:
break;
}
}
return __super::PreTranslateMessage(pMsg);
}
LRESULT CclientTestDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: 在此添加专用代码和/或调用基类
if(message==WM_DISCONNECT)
{
TRACE("auto disconnect!\n");
OnBtnStop();
}
return __super::WindowProc(message, wParam, lParam);
}