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

📄 remoteddnsex.cpp

📁 SDK DVR/DVS HIKVISION
💻 CPP
字号:
// RemoteDDNSEx.cpp : implementation file
//

#include "stdafx.h"
#include "newclient.h"
#include "RemoteDDNSEx.h"

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

/////////////////////////////////////////////////////////////////////////////
// CRemoteDDNSEx dialog


CRemoteDDNSEx::CRemoteDDNSEx(CWnd* pParent /*=NULL*/)
	: CDialog(CRemoteDDNSEx::IDD, pParent)
{
	//{{AFX_DATA_INIT(CRemoteDDNSEx)
	m_UseDDNS = FALSE;
	m_DevDomain = _T("");
	m_DDNSDomain = _T("");
	m_Passwd = _T("");
	m_PasswdVer = _T("");
	m_Port = 0;
	m_Username = _T("");
	//}}AFX_DATA_INIT
}

CRemoteDDNSEx::CRemoteDDNSEx(LONG lServerID, CWnd* pParent /*=NULL*/)
: CDialog(CRemoteDDNSEx::IDD, pParent)
{
	//{{AFX_DATA_INIT(CRemoteDDNSEx)
	m_UseDDNS = FALSE;
	m_DevDomain = _T("");
	m_DDNSDomain = _T("");
	m_Passwd = _T("");
	m_PasswdVer = _T("");
	m_Port = 0;
	m_Username = _T("");
	//}}AFX_DATA_INIT
	m_lServerID = lServerID;
}

void CRemoteDDNSEx::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRemoteDDNSEx)
	DDX_Control(pDX, IDC_COMBOSERVERTYPE, m_ServertypeCombo);
	DDX_Check(pDX, IDC_CHECKDDNS, m_UseDDNS);
	DDX_Text(pDX, IDC_EDITDEVDOMAIN, m_DevDomain);
	DDX_Text(pDX, IDC_EDITDOMAIN, m_DDNSDomain);
	DDX_Text(pDX, IDC_EDITPASSWD, m_Passwd);
	DDX_Text(pDX, IDC_EDITPASSWDVERIFY, m_PasswdVer);
	DDX_Text(pDX, IDC_EDITPORT, m_Port);
	DDX_Text(pDX, IDC_EDITUSERNAME, m_Username);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CRemoteDDNSEx, CDialog)
	//{{AFX_MSG_MAP(CRemoteDDNSEx)
	ON_BN_CLICKED(IDC_CHECKDDNS, OnCheckddns)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRemoteDDNSEx message handlers
int CRemoteDDNSEx::CheckDomain(CString &Domain)
{
	BOOL bDomain = FALSE;
	for (int i=0; i<Domain.GetLength(); i++)
	{
		if ((Domain.GetAt(i) < '0' || Domain.GetAt(i) > '9') && Domain.GetAt(i) != '.')
		{
			bDomain = TRUE;
		}
		if (Domain.GetAt(i) == ' ')
		{
			AfxMessageBox("space is not allowed in domain address!!!");
			return 2;
		}
	}
	if (!bDomain)
	{
		if (inet_addr(Domain.GetBuffer(Domain.GetLength())) == INADDR_NONE)
		{
			Domain.ReleaseBuffer();
			AfxMessageBox("Invalid IP address!!!");
			return 1;
		}
		Domain.ReleaseBuffer();
	}
	return 0;
}

void CRemoteDDNSEx::OnOK()
{
	// TODO: Add extra validation here
	UpdateData(TRUE);

	int index = m_ServertypeCombo.GetCurSel();
	
	if (m_UseDDNS)
	{
		if (m_Passwd != m_PasswdVer)
		{
			AfxMessageBox("DDNS password verify failed!!!");
			return;
		}
	}
	
	memset(&m_struDDNSCfgEx, 0, sizeof(m_struDDNSCfgEx));
	
	m_struDDNSCfgEx.byHostIndex = index + 1;
	m_struDDNSCfgEx.byEnableDDNS = m_UseDDNS;
	m_struDDNSCfgEx.wDDNSPort = m_Port;
	
	if (CheckDomain(m_DDNSDomain))
	{
		return;
	}
	else
	{
		sprintf((char *)m_struDDNSCfgEx.sServerName, "%s", m_DDNSDomain);
	}
	
	if (CheckDomain(m_DevDomain))
	{
		return;
	}
	else
	{
		sprintf((char *)m_struDDNSCfgEx.sDomainName, "%s", m_DevDomain);
	}
	sprintf((char *)m_struDDNSCfgEx.sUsername, "%s", m_Username);
	sprintf((char *)m_struDDNSCfgEx.sPassword, "%s", m_Passwd);
	
	if (!NET_DVR_SetDVRConfig(m_lServerID, NET_DVR_SET_DDNSCFG_EX, 0, &m_struDDNSCfgEx, sizeof(m_struDDNSCfgEx)))
	{
		CString tmp;
		tmp.Format("Error: NET_DVR_SET_DDNSCFG_EX = %d", NET_DVR_GetLastError());
		AfxMessageBox(tmp);
		return;
	}
	MessageBox("set parameters success!");

	CDialog::OnOK();
}

BOOL CRemoteDDNSEx::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_ServertypeCombo.ResetContent();
	m_ServertypeCombo.AddString("DynDNS");
	m_ServertypeCombo.AddString("PeanutHull");

	m_ServertypeCombo.SetCurSel(0);

	DWORD dwRet = 0;
	memset(&m_struDDNSCfgEx, 0, sizeof(m_struDDNSCfgEx));
	if (!NET_DVR_GetDVRConfig(m_lServerID, NET_DVR_GET_DDNSCFG_EX, 0, &m_struDDNSCfgEx, sizeof(m_struDDNSCfgEx), &dwRet))
	{
		CString tmp;
		tmp.Format("Error: NET_DVR_GET_DDNSCFG_EX = %d", NET_DVR_GetLastError());
		AfxMessageBox(tmp);
		return FALSE;
	}

	m_ServertypeCombo.SetCurSel(m_struDDNSCfgEx.byHostIndex - 1);
	m_UseDDNS = m_struDDNSCfgEx.byEnableDDNS;
	m_DDNSDomain.Format("%s", m_struDDNSCfgEx.sServerName);
	m_Port = m_struDDNSCfgEx.wDDNSPort;
	m_Username.Format("%s", m_struDDNSCfgEx.sUsername);
	m_Passwd.Format("%s", m_struDDNSCfgEx.sPassword);
	m_PasswdVer = m_Passwd;
	m_DevDomain.Format("%s", m_struDDNSCfgEx.sDomainName);
	
	UpdateData(FALSE);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CRemoteDDNSEx::OnCheckddns() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);

	GetDlgItem(IDC_EDITDOMAIN)->EnableWindow(m_UseDDNS);
	GetDlgItem(IDC_EDITPASSWD)->EnableWindow(m_UseDDNS);
	GetDlgItem(IDC_EDITPASSWDVERIFY)->EnableWindow(m_UseDDNS);
	GetDlgItem(IDC_EDITPORT)->EnableWindow(m_UseDDNS);
	GetDlgItem(IDC_EDITUSERNAME)->EnableWindow(m_UseDDNS);

	UpdateData(FALSE);
}

⌨️ 快捷键说明

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