www.pudn.com > StreamMediaPlayerSourceCode.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() 
{ 
	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); 
}