⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 netctlelsedlg.cpp

📁 TM8000硬盘录像机客户端编程文档和Demo源代码
💻 CPP
字号:
// NetCtlElseDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Sample.h"
#include "NetCtlElseDlg.h"
#include "NetRemoteCtrlDlg.h"
#include <shlwapi.h>
#include "ConSDK.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

extern CNetRemoteCtrlDlg *pNetRemoteCtlDlg;
extern USER_DVR_PARAMETER     *Con_pDVRPara; 
extern LoginParam             m_LoginParam; 
Terminal            m_Terminal;

extern BOOL DVRParaChange;
extern BOOL ENGLISH;
//-------------------------------


BOOL bNeedSound = TRUE ;
BOOL bShowAlarmInfo = TRUE ; 
BOOL bAutoTurntoAlarmPort =FALSE ;
BOOL bAlarmAutoRec=FALSE;
BOOL bAlarmSend=TRUE ;
UINT iAlarmTime=1;
int  nAlarmStockDays=90;

/////////////////////////////////////////////////////////////////////////////
// CNetCtlElseDlg dialog


CNetCtlElseDlg::CNetCtlElseDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CNetCtlElseDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CNetCtlElseDlg)
	m_EditPortName = _T("");
	m_SysYear = 0;
	m_SysMonth = 0;
	m_SysDay = 0;
	m_SysHour = 0;
	m_SysMinute = 0;
	m_SysSecond = 0;
	m_SysWeek = 0;
	//}}AFX_DATA_INIT
	pParent = NULL ;
}


void CNetCtlElseDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CNetCtlElseDlg)
	DDX_Control(pDX, IDC_EDITPORTNAME, m_cEditPortName);
	DDX_Control(pDX, IDC_PORT_COMBO, m_PortCombo);
	DDX_Text(pDX, IDC_EDITPORTNAME, m_EditPortName);
	DDV_MaxChars(pDX, m_EditPortName, 32);
	DDX_Text(pDX, IDC_EDITSYSYEAR, m_SysYear);
	DDX_Text(pDX, IDC_EDITSYSMONTH, m_SysMonth);
	DDX_Text(pDX, IDC_EDITSYSDAY, m_SysDay);
	DDX_Text(pDX, IDC_EDITSYSHOUR, m_SysHour);
	DDX_Text(pDX, IDC_EDITSYSMINUTE, m_SysMinute);
	DDX_Text(pDX, IDC_EDITSYSSECOND, m_SysSecond);
	DDX_Text(pDX, IDC_EDITSYSWEEK, m_SysWeek);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CNetCtlElseDlg, CDialog)
	//{{AFX_MSG_MAP(CNetCtlElseDlg)
	ON_BN_CLICKED(IDC_SET_BUTTON, OnSetButton)
	ON_BN_CLICKED(IDC_DEFAULTSET_BUTTON, OnDefaultsetButton)
	ON_BN_CLICKED(IDC_SAVEFLASH_BUTTON, OnSaveflashButton)
	ON_CBN_SELCHANGE(IDC_PORT_COMBO, OnSelchangePortCombo)
	ON_BN_CLICKED(IDC_BUTTONSETSYSTIME, OnButtonsetsystime)
	ON_BN_CLICKED(IDC_BUTTONGETSYSTIME, OnButtongetsystime)
	ON_WM_DESTROY()
	ON_BN_CLICKED(IDC_BUTTON_SETOSD, OnButtonSetosd)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CNetCtlElseDlg message handlers

int static CALLBACK MyCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
   // lParamSort contains a pointer to the list view control.
   // The lParam of an item is just its index.
   CListCtrl* pListCtrl = (CListCtrl*) lParamSort;
   
   CString    strItem1 = pListCtrl->GetItemText(lParam1, 0);
   CString    strItem2 = pListCtrl->GetItemText(lParam2, 0);
   return -strcmp(strItem2, strItem1);
}

void CNetCtlElseDlg::OnSetButton() 
{
    BYTE portno;	
	UpdateData(TRUE) ;
    DVRParaChange=TRUE;

	portno = m_PortCombo.GetCurSel() ;
   //-------- 转换成DVR的区位码 -----
	unsigned long   len ;
	char Buf[32];
	short count=0;
	len=m_EditPortName.GetLength();
	if(len>33)
		len=32;
	memset(Buf,0,32);
//	strcpy(Buf,m_EditPortName);
     memcpy(Buf,m_EditPortName,len);
	pNetRemoteCtlDlg->SetNetPortName(portno+1,Buf);
   
   if(Con_pDVRPara!=NULL)
   {
	   memset(Con_pDVRPara->PortConfig->nTermName,0,16); 
	   memcpy(Con_pDVRPara->PortConfig->nTermName,Buf,16);
   }	
}

void CNetCtlElseDlg::OnDefaultsetButton() 
{
	
	pNetRemoteCtlDlg->SetNetRemoteDefault();
	
	if (pNetRemoteCtlDlg->m_nDVRType <= 0) 
	{
		Con_GetDVRPara(pNetRemoteCtlDlg->m_nIpAddr,pNetRemoteCtlDlg->m_nServPort);
	}	
}

void CNetCtlElseDlg::OnSaveflashButton() 
{
	pNetRemoteCtlDlg->SetNetRemoteSaveFlash() ;
}

BOOL CNetCtlElseDlg::OnInitDialog() 
{
	char * l_DefaultSet;//=_T("Default Setup");
	char * l_SaveFlash;//=_T("Save Remote Para");
	char * l_PortName;//=_T("Camera Name:");
	char * l_PortNameSet;//=_T("Camera name setup");
	char * l_Port;//=_T("Camera");
	char * l_Set;//=_T("Setup");
	if(ENGLISH)
	{
		l_DefaultSet=_T("Default Setup");
		l_SaveFlash=_T("Save Remote Para");
		l_PortName=_T("Channel Name:");
		l_PortNameSet=_T("Channel name setup");
		l_Port=_T("Channel");
		l_Set=_T("Setup");
	}
	else
	{
		l_Set=_T("设置");
		l_DefaultSet=_T("远程缺省设置");
		l_SaveFlash=_T("远程保存参数");
		l_PortName=_T("通道名称:");
		l_PortNameSet=_T("通道名称设置");
		l_Port=_T("通道");
	}
	CDialog::OnInitDialog();
	CString str;
	/////////add lj
	int i;

	// TODO: Add extra initialization here
   	m_PortCombo.ResetContent() ;
	if(Con_pDVRPara!=NULL)
	{
		for (i=0;i<Con_pDVRPara->nPortNo ;i++)
		{
			str.Format("%s%02d",l_Port,i+1) ;
			m_PortCombo.AddString(str) ;
		}
		m_PortCombo.SetCurSel(0);
	}
     
	CWnd           *pWnd ;

	pWnd = GetDlgItem(IDC_STATICPORTNAMEFRAME) ;
	pWnd->SetWindowText(l_PortNameSet);
	
	pWnd = GetDlgItem(IDC_SET_BUTTON) ;
	pWnd->SetWindowText(l_Set);

	pWnd = GetDlgItem(IDC_DEFAULTSET_BUTTON) ;
	pWnd->SetWindowText(l_DefaultSet);
	pWnd = GetDlgItem(IDC_SAVEFLASH_BUTTON) ;
	pWnd->SetWindowText(l_SaveFlash);


	pWnd=GetDlgItem(IDC_STATICPORTNAME);
	pWnd->SetWindowText(l_PortName);
	
	CComboBox *pDatePos = (CComboBox *)(GetDlgItem(IDC_COMBO_DATEPOS));
	CComboBox *pDChPos = (CComboBox *)(GetDlgItem(IDC_COMBO_CHPOS));
	pDatePos->InsertString(0,"左上角");
	pDatePos->InsertString(1,"左下角");
	pDatePos->InsertString(2,"右上角");
	pDatePos->InsertString(3,"右下角");
	pDatePos->SetCurSel(0);
	pDChPos->InsertString(0,"左上角");
	pDChPos->InsertString(1,"左下角");
	pDChPos->InsertString(2,"右上角");
	pDChPos->InsertString(3,"右下角");
	pDChPos->SetCurSel(0);
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

BOOL CNetCtlElseDlg::Create(CWnd* pParentWnd) 
{
	// TODO: Add your specialized code here and/or call the base class
	pParent = (CNetRemoteCtrlDlg *)pParentWnd ;
	return CDialog::Create(IDD, pParentWnd);
}

void CNetCtlElseDlg::FreshData(BOOL fresh) 
{
	// TODO: Add your control notification handler code here
	UpdateData(fresh);
}

void CNetCtlElseDlg::OnSelchangePortCombo() 
{
	// TODO: Add your control notification handler code here
    BYTE portno;	
	portno = m_PortCombo.GetCurSel();
    PortNumChangePro(portno);
	
}
void CNetCtlElseDlg::PortNumChangePro(BYTE portno)
{
	char Buf[40];
	char NameBuf[40];
	char Buf1[40];

	//if(Con_pDVRPara!=NULL)
	if (pNetRemoteCtlDlg->m_nDVRType <= 0) 
	{// 83 V6.05
		m_EditPortName=Con_pDVRPara->PortConfig[portno].nTermName;
		UpdateData(FALSE);
	}
	//if (m_LoginParam.IPAddress > 0)
	else
	{// 拆结构取参数		
		int portno;	
		portno=m_PortCombo.GetCurSel();
		//获取OSD属性
		OSDParam m_OSDParam;
		memset(&m_OSDParam,0,sizeof(OSDParam));
		pNetRemoteCtlDlg->GetDvrParam(portno+1,0,PARA_TYPE_TEXTOVER,&m_OSDParam,sizeof(OSDParam));
		((CComboBox *)GetDlgItem(IDC_COMBO_DATEPOS))->SetCurSel(m_OSDParam.nDateOSDParam&0x03);
		((CComboBox *)GetDlgItem(IDC_COMBO_CHPOS))->SetCurSel(m_OSDParam.nChOSDParam&0x03);
		((CButton *)GetDlgItem(IDC_CHECK_REVERSECOLOR))->SetCheck(m_OSDParam.nReverse);
		//获取通道名称
		pNetRemoteCtlDlg->GetDvrParam(portno+1,0,PARA_TYPE_TERM,&m_Terminal,sizeof(Terminal));

		memset(Buf,0,40);
		memset(Buf1,0,40);
		memset(NameBuf,0,40);
		if(portno<MAXPORTNO)
		{
			memcpy(Buf, &m_Terminal.ChannelTitle1, sizeof(UInt32));
			memcpy(Buf + sizeof(UInt32), &m_Terminal.ChannelTitle2, sizeof(UInt32));
			memcpy(Buf + sizeof(UInt32) * 2, &m_Terminal.ChannelTitle3, sizeof(UInt32));
			memcpy(Buf + sizeof(UInt32) * 3, &m_Terminal.ChannelTitle4, sizeof(UInt32));
	        memcpy(Buf + sizeof(UInt32) * 4, &m_Terminal.ChannelTitle5, sizeof(UInt32));
		    memcpy(Buf + sizeof(UInt32) * 5, &m_Terminal.ChannelTitle6, sizeof(UInt32));
			memcpy(Buf + sizeof(UInt32) * 6, &m_Terminal.ChannelTitle7, sizeof(UInt32));
			memcpy(Buf + sizeof(UInt32) * 7, &m_Terminal.ChannelTitle8, sizeof(UInt32));
		}
		short count=-1;
		int j=0;
		
		for(j=0;j<32;j++)
		{
			if(Buf[j]<16&&Buf[j]>0)
			{
				Buf1[++count]=Buf[++j]+32;
			}
			else if(Buf[j]>=16)
			{
				Buf1[++count]=Buf[j]+160;
				Buf1[++count]=Buf[++j]+160;
			}
		}
		Buf1[32]=0;
		memcpy(NameBuf,Buf1,32);
		m_EditPortName=NameBuf;
		UpdateData(FALSE);
	}
}

BOOL CNetCtlElseDlg::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	DWORD t1=0;
	DWORD t2=0;

    t1=pMsg->message;
	t2=(DWORD)pMsg->wParam;
	if(t1==WM_KEYDOWN&&(t2==VK_RETURN||t2==VK_ESCAPE))
       return true;
	
	return CDialog::PreTranslateMessage(pMsg);
}

void CNetCtlElseDlg::Refresh()
{
	char * l_Port;//=_T("Camera");
	if(ENGLISH)
		l_Port=_T("Channel");
	else
		l_Port=_T("通道");
   	m_PortCombo.ResetContent() ;

	if (pNetRemoteCtlDlg->m_nDVRType <= 0) 
	{
   		for (int i=0;i<Con_pDVRPara->nPortNo ;i++)
		{
			CString   str ;
			str.Format("%s%02d",l_Port,i+1) ;
			m_PortCombo.AddString(str) ;
		}
	}
	else
	{
   		for (int i=0;i<m_LoginParam.ChannelCount;i++)
		{
			CString   str ;
			str.Format("%s%02d",l_Port,i+1) ;
			m_PortCombo.AddString(str) ;
		}
	}
	m_PortCombo.SetCurSel(0);
	OnSelchangePortCombo();
}

void CNetCtlElseDlg::OnButtonsetsystime() 
{
	UpdateData(TRUE);
	if(m_SysYear>99||m_SysYear<0)
	{
		MessageBox("年份应该在0-99之间");
		return;
	}
	if(m_SysMonth>12||m_SysMonth<1)
	{
		MessageBox("月份应该在1-12之间");
		return;
	}
	if(m_SysDay>31||m_SysDay<1)
	{
		MessageBox("日应该在1-31之间");
		return;
	}
	if(m_SysHour>23||m_SysHour<0)
	{
		MessageBox("小时应该在0-23之间");
		return;
	}
	if(m_SysMinute>59||m_SysMinute<0)
	{
		MessageBox("分钟应该在0-59之间");
		return;
	}
	if(m_SysSecond>59||m_SysSecond<0)
	{
		MessageBox("秒应该在0-59之间");
		return;
	}
	if(m_SysWeek>7||m_SysWeek<1)
	{
		MessageBox("星期应该在1-7之间");
		return;
	}

	pNetRemoteCtlDlg->SetDVRSysTime(m_SysYear,m_SysMonth,m_SysDay,
		m_SysHour,m_SysMinute,m_SysSecond,m_SysWeek);	

}

void CNetCtlElseDlg::OnButtongetsystime() 
{
	pNetRemoteCtlDlg->GetDVRSysTime();
}

void CNetCtlElseDlg::OnButtonSetosd() 
{
	// TODO: Add your control notification handler code here
	BYTE nDatePosType = ((CComboBox *)GetDlgItem(IDC_COMBO_DATEPOS))->GetCurSel();
	BYTE nChPosType = ((CComboBox *)GetDlgItem(IDC_COMBO_CHPOS))->GetCurSel();
	BOOL bReverseColor = ((CButton *)GetDlgItem(IDC_CHECK_REVERSECOLOR))->GetCheck();
	pNetRemoteCtlDlg->SetOSDParam(0,nDatePosType,0,nChPosType,bReverseColor);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -