📄 channelconfig.cpp
字号:
// ChannelConfig.cpp : implementation file
//
#include "stdafx.h"
#include "netsdkdemo.h"
#include "ChannelConfig.h"
#include "SetHide.h"
#include "NetSDKDemoDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CChannelConfig dialog
#include "TimingRecord.h"
CChannelConfig::CChannelConfig(CWnd* pParent /*=NULL*/)
: CDialog(CChannelConfig::IDD, pParent)
{
//{{AFX_DATA_INIT(CChannelConfig)
m_rec_ratectrl = 0;
m_net_ratectrl = 0;
m_channelname = _T("");
m_bHide = FALSE;
m_bHideAlarm = FALSE;
m_bMotion = FALSE;
m_bOSD = FALSE;
m_bChannelName = FALSE;
m_bTimingRecord = FALSE;
m_bVLostAlarm = FALSE;
m_channelname_X = 0;
m_channelname_Y = 0;
m_osd_X = 0;
m_osd_Y = 0;
m_bOSDWeek = FALSE;
//}}AFX_DATA_INIT
}
void CChannelConfig::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CChannelConfig)
DDX_Control(pDX, IDC_OSD_TIMEFORMATSEL, m_osd_timeformatsel);
DDX_Control(pDX, IDC_OSD_DISTYPESEL, m_osd_distypesel);
DDX_Control(pDX, IDC_PRERECORDTIME, m_prerecordsel);
DDX_Control(pDX, IDC_RECORDDELAY, m_recorddelaysel);
DDX_Control(pDX, IDC_FRAMERATESEL2, m_net_frameratesel);
DDX_Control(pDX, IDC_FRAMERATESEL, m_rec_frameratesel);
DDX_Control(pDX, IDC_CHANNELSEL, m_channelsel);
DDX_Control(pDX, IDC_COPYCHANNELSEL, m_copychannelsel);
DDX_Control(pDX, IDC_RATECTRLSEL2, m_net_ratectrlsel);
DDX_Control(pDX, IDC_RATECTRLSEL, m_rec_ratectrlsel);
DDX_Control(pDX, IDC_RATETYPESEL2, m_net_ratetypesel);
DDX_Control(pDX, IDC_RATETYPESEL, m_rec_ratetypesel);
DDX_Control(pDX, IDC_STREAMTYPESEL2, m_net_streamtypesel);
DDX_Control(pDX, IDC_STREAMTYPESEL, m_rec_streamtypesel);
DDX_Control(pDX, IDC_SIZESEL2, m_net_imgsizesel);
DDX_Control(pDX, IDC_SIZESEL, m_rec_imgsizesel);
DDX_Control(pDX, IDC_IMAGEQUALITY2, m_net_imgqualitysel);
DDX_Control(pDX, IDC_IMAGEQUALITY, m_rec_imgqualitysel);
DDX_Text(pDX, IDC_RATECTRL, m_rec_ratectrl);
DDX_Text(pDX, IDC_RATECTRL2, m_net_ratectrl);
DDX_Text(pDX, IDC_CHANNELNAME, m_channelname);
DDX_Check(pDX, IDC_HIDE_CHECK, m_bHide);
DDX_Check(pDX, IDC_HIDEALARM_CHECK, m_bHideAlarm);
DDX_Check(pDX, IDC_MOTION_CHECK, m_bMotion);
DDX_Check(pDX, IDC_OSD_CHECK, m_bOSD);
DDX_Check(pDX, IDC_CHANNELNAME_CHECK, m_bChannelName);
DDX_Check(pDX, IDC_TIMINGRECORD_CHECK, m_bTimingRecord);
DDX_Check(pDX, IDC_VLOSTALARM_CHECK, m_bVLostAlarm);
DDX_Text(pDX, IDC_CHANNELNAME_X, m_channelname_X);
DDX_Text(pDX, IDC_CHANNELNAME_Y, m_channelname_Y);
DDX_Text(pDX, IDC_OSD_X, m_osd_X);
DDX_Text(pDX, IDC_OSD_Y, m_osd_Y);
DDX_Check(pDX, IDC_OSDWEEK_CHECK, m_bOSDWeek);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CChannelConfig, CDialog)
//{{AFX_MSG_MAP(CChannelConfig)
ON_CBN_SELCHANGE(IDC_CHANNELSEL, OnSelchangeChannelsel)
ON_BN_CLICKED(IDC_APPLY, OnApply)
ON_BN_CLICKED(IDC_SETTIMINGRECORD, OnSettimingrecord)
ON_BN_CLICKED(IDC_TIMINGRECORD_CHECK, OnTimingrecordCheck)
ON_BN_CLICKED(IDC_HIDE_CHECK, OnHideCheck)
ON_BN_CLICKED(IDC_MOTION_CHECK, OnMotionCheck)
ON_BN_CLICKED(IDC_HIDEALARM_CHECK, OnHidealarmCheck)
ON_BN_CLICKED(IDC_VLOSTALARM_CHECK, OnVlostalarmCheck)
ON_BN_CLICKED(IDC_OSD_CHECK, OnOsdCheck)
ON_BN_CLICKED(IDC_CHANNELNAME_CHECK, OnChannelnameCheck)
ON_BN_CLICKED(IDC_SETHIDE, OnSethide)
ON_BN_CLICKED(IDC_RESTORE, OnRestore)
ON_CBN_SELCHANGE(IDC_RATECTRLSEL, OnSelchangeRatectrlsel)
ON_CBN_SELCHANGE(IDC_RATECTRLSEL2, OnSelchangeRatectrlsel2)
ON_BN_CLICKED(IDC_SAVECHANNELNAME, OnSavechannelname)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CChannelConfig message handlers
BOOL CChannelConfig::OnInitDialog()
{
CDialog::OnInitDialog();
g_SetWndStaticText(this);
// TODO: Add extra initialization here
CRect rc(0, 0, 0, 0);
GetParent()->GetClientRect(&rc);
((CTabCtrl*)GetParent())->AdjustRect(FALSE, &rc);
MoveWindow(&rc);
//初始化界面
m_rec_imgqualitysel.InsertString(0, MSG_CHANNELCFG_PQWORST);
m_rec_imgqualitysel.InsertString(1, MSG_CHANNELCFG_PQWORSE);
m_rec_imgqualitysel.InsertString(2, MSG_CHANNELCFG_PQNORMAL);
m_rec_imgqualitysel.InsertString(3, MSG_CHANNELCFG_PQGOOD);
m_rec_imgqualitysel.InsertString(4, MSG_CHANNELCFG_PQBETTER);
m_rec_imgqualitysel.InsertString(5, MSG_CHANNELCFG_PQBEST);
m_net_imgqualitysel.InsertString(0, MSG_CHANNELCFG_PQWORST);
m_net_imgqualitysel.InsertString(1, MSG_CHANNELCFG_PQWORSE);
m_net_imgqualitysel.InsertString(2, MSG_CHANNELCFG_PQNORMAL);
m_net_imgqualitysel.InsertString(3, MSG_CHANNELCFG_PQGOOD);
m_net_imgqualitysel.InsertString(4, MSG_CHANNELCFG_PQBETTER);
m_net_imgqualitysel.InsertString(5, MSG_CHANNELCFG_PQBEST);
m_rec_streamtypesel.InsertString(0, MSG_CHANNELCFG_VSTREAM);
m_rec_streamtypesel.InsertString(1, MSG_CHANNELCFG_CSTREAM);
m_net_streamtypesel.InsertString(0, MSG_CHANNELCFG_VSTREAM);
m_net_streamtypesel.InsertString(1, MSG_CHANNELCFG_CSTREAM);
m_rec_ratetypesel.InsertString(0, MSG_CHANNELCFG_LMRATE);
m_rec_ratetypesel.InsertString(1, MSG_CHANNELCFG_VRRATE);
m_net_ratetypesel.InsertString(0, MSG_CHANNELCFG_LMRATE);
m_net_ratetypesel.InsertString(1, MSG_CHANNELCFG_VRRATE);
CString sTemp;
char cTemp[100];
m_nChanSel = 0;
m_copychannelsel.ResetContent();
m_channelsel.ResetContent();
sTemp.Format(_T(NAME_CHANNELCFG_ALLCHANNEL));
m_copychannelsel.AddString(sTemp);
for(int i=0; i < m_Device->Info.byChanNum; i++)
{
sTemp.Format("%d", i + 1);
sTemp = NAME_CHANNELCFG_CHANNEL + sTemp;
m_channelsel.AddString(sTemp);
m_copychannelsel.AddString(sTemp);
bSetChannelPara[i] = FALSE;
bGetChannelPara[i] = FALSE;
bRemoteRecord[i] = FALSE;
if(GetChanPara(i))
{
bGetChannelPara[i] = TRUE;
}
else
{
sTemp.Format("%d",i+1);
sTemp = MSG_CHANNELCFG_GETCHANNELCFGFAILED + sTemp;
AfxMessageBox(sTemp);
}
}
char buf[512];
int chancount;
int bRet = CLIENT_QueryChannelName(m_Device->LoginID, (char *)buf, 512, &chancount);
if (bRet)
{
for (int i = 0; i < 16; i++)
{
strcpy((char *)m_piccfg[i].sChanName, buf+ 32*i);
}
}
else
{
((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
}
if (m_channelsel.GetCount() > 0)
{
m_channelsel.SetCurSel(m_nChanSel);
}
m_copychannelsel.SetCurSel(m_nChanSel);
// m_nChanNum = m_nChanSel+m_lStartChannel;
if(bGetChannelPara[m_nChanSel])
{
//录像参数
if((m_compressioncfg[m_nChanSel].struRecordPara.dwVideoBitrate >> 31) && 0x01)
{
GetDlgItem(IDC_RATECTRL)->EnableWindow(TRUE);
m_rec_ratectrlsel.SetCurSel(22); //自定义码流
m_rec_ratectrl = m_compressioncfg[m_nChanSel].struRecordPara.dwVideoBitrate & 0x7fffffff;
}
else
{
m_rec_ratectrlsel.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.dwVideoBitrate-2);
m_rec_ratectrl = 0;
GetDlgItem(IDC_RATECTRL)->EnableWindow(FALSE);
}
m_rec_imgsizesel.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.byResolution);
m_rec_streamtypesel.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.byStreamType);
m_rec_imgqualitysel.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.byPicQuality - 1);
m_rec_ratetypesel.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.byBitrateType);
m_rec_frameratesel.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.dwVideoFrameRate);
//2005-07-08 网传参数
if ((m_compressioncfg[m_nChanSel].struNetPara.dwVideoBitrate >> 31) && 0x01)
{
GetDlgItem(IDC_RATECTRL2)->EnableWindow(TRUE);
m_net_ratectrlsel.SetCurSel(22); //自定义码流
m_net_ratectrl = m_compressioncfg[m_nChanSel].struNetPara.dwVideoBitrate & 0x7fffffff;
}
else
{
m_net_ratectrlsel.SetCurSel(m_compressioncfg[m_nChanSel].struNetPara.dwVideoBitrate-2);
m_net_ratectrl = 0;
GetDlgItem(IDC_RATECTRL2)->EnableWindow(FALSE);
}
m_net_imgsizesel.SetCurSel(m_compressioncfg[m_nChanSel].struNetPara.byResolution);
m_net_streamtypesel.SetCurSel(m_compressioncfg[m_nChanSel].struNetPara.byStreamType);
m_net_imgqualitysel.SetCurSel(m_compressioncfg[m_nChanSel].struNetPara.byPicQuality - 1);
m_net_ratetypesel.SetCurSel(m_compressioncfg[m_nChanSel].struNetPara.byBitrateType);
m_net_frameratesel.SetCurSel(m_compressioncfg[m_nChanSel].struNetPara.dwVideoFrameRate);
//end
m_bTimingRecord = m_record[m_nChanSel].dwRecord;
// GetDlgItem(IDC_SETTIMINGRECORD)->EnableWindow(m_bTimingRecord);
m_recorddelaysel.SetCurSel(m_record[m_nChanSel].dwRecordTime);
m_prerecordsel.SetCurSel(m_record[m_nChanSel].dwPreRecordTime);
ZeroMemory(cTemp, 100);
memcpy(cTemp, m_piccfg[m_nChanSel].sChanName, NAME_LEN);
m_channelname.Format("%s",cTemp);
m_bHide = m_piccfg[m_nChanSel].dwEnableHide;
GetDlgItem(IDC_SETHIDE)->EnableWindow(m_bHide);
m_bMotion = m_piccfg[m_nChanSel].struMotion.byEnableHandleMotion;
GetDlgItem(IDC_SETMOTION)->EnableWindow(m_bMotion);
if(m_piccfg[m_nChanSel].struHideAlarm.dwEnableHideAlarm > 0)
{
m_bHideAlarm = TRUE;
}
else
{
m_bHideAlarm = FALSE;
}
GetDlgItem(IDC_SETHIDEALARM)->EnableWindow(m_bHideAlarm);
m_bChannelName = m_piccfg[m_nChanSel].dwShowChanName;
m_channelname_X = m_piccfg[m_nChanSel].wShowNameTopLeftX;
m_channelname_Y = m_piccfg[m_nChanSel].wShowNameTopLeftY;
m_bOSD = m_piccfg[m_nChanSel].dwShowOsd;
m_osd_X = m_piccfg[m_nChanSel].wOSDTopLeftX;
m_osd_Y = m_piccfg[m_nChanSel].wOSDTopLeftY;
m_bOSDWeek = m_piccfg[m_nChanSel].byDispWeek;
m_osd_distypesel.SetCurSel(m_piccfg[m_nChanSel].byOSDAttrib-1);
m_osd_timeformatsel.SetCurSel(m_piccfg[m_nChanSel].byOSDType);
EnableChanname(m_bChannelName);
EnableOSD(m_bOSD);
m_bVLostAlarm = m_piccfg[m_nChanSel].struVILost.byEnableHandleVILost;
GetDlgItem(IDC_SETVLOSTALARM)->EnableWindow(m_bVLostAlarm);
GetDlgItem(IDC_APPLY)->EnableWindow(TRUE);
GetDlgItem(IDC_RESTORE)->EnableWindow(TRUE);
}
else
{
GetDlgItem(IDC_APPLY)->EnableWindow(FALSE);
GetDlgItem(IDC_RESTORE)->EnableWindow(FALSE);
}
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
BOOL CChannelConfig::GetChanPara(int nIndex)
{
DWORD dwReturned;
if(!CLIENT_GetDevConfig(m_Device->LoginID, DEV_GET_PICCFG, nIndex ,&m_piccfg[nIndex], sizeof(NET_DEV_PICCFG), &dwReturned))
{
return FALSE;
}
if(!CLIENT_GetDevConfig(m_Device->LoginID,DEV_GET_COMPRESSCFG, nIndex,&m_compressioncfg[nIndex], sizeof(NET_DEV_COMPRESSIONCFG), &dwReturned))
{
return FALSE;
}
/*
if(!CLIENT_GetDevConfig(m_Device->LoginID,NET_DVR_GET_RECORDCFG, nIndex + 1,&m_record[nIndex], sizeof(NET_DVR_RECORD), &dwReturned))
{
CString sTemp;
sTemp.Format("%d : ERROR: NET_DVR_GET_RECORDCFG = %d \n", m_nChanNum, NET_DVR_GetLastError());
TRACE(sTemp);
return FALSE;
}
*/
return TRUE;
}
void CChannelConfig::EnableChanname(BOOL bEnable)
{
GetDlgItem(IDC_CHANNELNAME_X)->EnableWindow(bEnable);
GetDlgItem(IDC_CHANNELNAME_Y)->EnableWindow(bEnable);
}
void CChannelConfig::EnableOSD(BOOL bEnable)
{
GetDlgItem(IDC_OSD_X)->EnableWindow(bEnable);
GetDlgItem(IDC_OSD_Y)->EnableWindow(bEnable);
GetDlgItem(IDC_OSD_DISTYPESEL)->EnableWindow(bEnable);
GetDlgItem(IDC_OSD_TIMEFORMATSEL)->EnableWindow(bEnable);
GetDlgItem(IDC_OSDWEEK_CHECK)->EnableWindow(bEnable);
}
void CChannelConfig::OnSelchangeChannelsel()
{
m_nChanSel = m_channelsel.GetCurSel();
char cTemp[100];
if(!bGetChannelPara[m_nChanSel])
{
if(GetChanPara(m_nChanSel))
{
char buf[512];
int chancount;
int bRet = CLIENT_QueryChannelName(m_Device->LoginID, (char *)buf, 512, &chancount);
if (bRet)
{
for (int i = 0; i < 16; i++)
{
strcpy((char *)m_piccfg[i].sChanName, buf+ 32*i);
}
}
else
{
((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
}
bGetChannelPara[m_nChanSel] = TRUE;
}
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -