// newclientDlg.cpp : implementation file // #include "stdafx.h" #include "StoneU_HC_OCX.h" #include "newclientDlg.h" #include "MyOutput.h" #include "Curwin.h" #include "EventLog.h" #include "VoiceExchange.h" #include "SetAlarm.h" #include "PlayBack.h" #include "SystemConfig.h" #include "DecodeCardSDK.h" #include "SYS\TIMEB.H" #include "GetCapture.h" #include "CruiseRoute.h" #include "Global.h" #include "mdlProject.h" #include ".\newclientdlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #define LEFT_DISTANCE 0 #define TOP_DISTANCE 0 #define W_RATIO 1.0 #define H_RATIO 1.0 #pragma comment(lib,"Ws2_32.lib") #pragma comment(lib,"lib\\playm4.lib") #pragma comment(lib,"lib\\AudioCodecSDK.lib") #pragma comment(lib,"lib\\DsSdk.lib") #pragma comment(lib,"lib\\HCNetSDK.lib") #pragma comment(lib,"Winmm.lib") #define WM_MYCOMMAND WM_USER+1 //for sdk CNewclientDlg *g_NewClientDlg = NULL; typedef struct _RECORDINFO { bool bHaveSignal; //真:有信号 bool bCapture; //真:正在下载 DWORD dwVideoStartTime; //开始下载时间 DWORD dwNoMotionStartTime; //没移动开始时间 char sDvsName[50]; //DVS int nDvrChannel; //DVS 通道号 }RECORD_INFO; RECORD_INFO g_RecordInfo[64]; int g_nRecordIndex=0; //Record 索引 BOOL __stdcall MessCallBack_EX(LONG lCommand,char *sDVRIP,char *pBuf,DWORD dwBufLen) { return TRUE; } CLIENTPARAM ClientParam; SERVER_INFO serverinfo[MAXIPNUMBER]; IP_INFO allipinfo[MAXIPNUMBER][MAXCHANNUM]; IP_INFO selipinfo[MAXNUMBER]; ALARM_INFO alarminfo[MAXALARMIN]; int iSurveillanceNumber; CMyOutput myoutput[MAXVIEWNUM]; extern WORD m_iSubWndCreated; CGetCapture getpic; CCurwin mycurwin; char cWorkDir[256]; BOOL bLargeWnd = FALSE; //播放窗口是否在放大,如果是放大的窗口,则关闭该窗口时,恢复到原来多窗口画面; WORD numberpos = 0; HBRUSH hBrush; extern WORD iActiveWndNumber; extern LONG lVoiceIndex; extern void ReadSurveillanceConfig(); extern void ReadClientConfig(); extern void F_AddEvent(CString csEvent); int MYVIEW_LEFT = 20; int MYVIEW_TOP = 20; HANDLE hVideoBeeper; //报警事件 HANDLE hBeepThread; //报警线程 extern int nUseCard; CNewclientDlg *MainDlg; BOOL g_bShareSound = FALSE; int g_nNetDelay = 2; BOOL g_bPTZStart = FALSE; int g_nPTZUP = 0; int g_nPTZNum = 0; DWORD runTimes = 0; const int interval = 5000; DWORD g_dwTime1 = 0; DWORD g_dwTime2 = 0; DWORD g_dwThread = 0; UINT Beeper(LPVOID pParam) { while(true) { Beep(800,500); Beep(1000,500); Beep(800,500); Beep(1000,500); if(WaitForSingleObject(hVideoBeeper,1000) == WAIT_OBJECT_0) { ResetEvent(hVideoBeeper); hBeepThread = NULL; return FALSE; } } return TRUE; } //根据IP和通道号得到索引 int g_FunGetRecordIndex( CString sDvrIP,int nChannel ) { int nRet=-1; for( int i=0;iF_MakeDir()) { g_RecordInfo[nIndex].dwVideoStartTime = GetTickCount(); g_RecordInfo[nIndex].dwNoMotionStartTime = GetTickCount(); g_NewClientDlg->F_StartClientRecord(nIndex); } } else if( g_RecordInfo[nIndex].bCapture && g_RecordInfo[nIndex].bHaveSignal ) { g_RecordInfo[nIndex].dwNoMotionStartTime = GetTickCount(); } } //if (m_alarminfo.dwAlarmRelateChannel[i] == 1) //{ // csTemp.Format("触发通道号%d ", i+nStartChan); // F_AddEvent(csTemp); // TRACE(csTemp); //} } break; case 1: for(i=0; iF_MakeDir()) { g_RecordInfo[nIndex].dwVideoStartTime = GetTickCount(); g_RecordInfo[nIndex].dwNoMotionStartTime = GetTickCount(); g_NewClientDlg->F_StartClientRecord(nIndex); } } else if( g_RecordInfo[nIndex].bCapture && g_RecordInfo[nIndex].bHaveSignal ) { g_RecordInfo[nIndex].dwNoMotionStartTime = GetTickCount(); } } } break; case 3: for(i=0; i= 0) ) { int nIndex = g_FunGetRecordIndex( sDVRIP,i ); if( !g_RecordInfo[nIndex].bCapture && g_RecordInfo[nIndex].bHaveSignal ) { if(g_NewClientDlg->F_MakeDir()) { g_RecordInfo[nIndex].dwVideoStartTime = GetTickCount(); g_RecordInfo[nIndex].dwNoMotionStartTime = GetTickCount(); g_NewClientDlg->F_StartClientRecord(nIndex); } } else if( g_RecordInfo[nIndex].bCapture && g_RecordInfo[nIndex].bHaveSignal ) { g_RecordInfo[nIndex].dwNoMotionStartTime = GetTickCount(); } } /*if (m_alarminfo.dwChannel[i] == 1) { csTemp.Format("服务器%s发生移动侦测报警 通道号%d ", sDVRIP, i+nStartChan); F_AddEvent(csTemp); TRACE(csTemp); if( !g_NewClientDlg->m_bCapture[i] ) { if( (myoutput[i].m_iPlayhandle >= 0) ) { if(g_NewClientDlg->F_MakeDir()) { g_NewClientDlg->F_StartClientRecord(i); g_NewClientDlg->m_dwNoMotionStartTime[i] = GetTickCount(); } } } }*/ } break; case 4: for(i=0; iF_MakeDir()) { g_RecordInfo[nIndex].dwVideoStartTime = GetTickCount(); g_RecordInfo[nIndex].dwNoMotionStartTime = GetTickCount(); g_NewClientDlg->F_StartClientRecord(nIndex); } } else if( g_RecordInfo[nIndex].bCapture && g_RecordInfo[nIndex].bHaveSignal ) { g_RecordInfo[nIndex].dwNoMotionStartTime = GetTickCount(); } } } break; case 7: for(i=0; i= 0) { //MainDlg->m_pAlarmLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_ON,CLed::LED_ROUND); } else { //MainDlg->m_pAlarmLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_DISABLED,CLed::LED_ROUND); } } break; case COMM_TRADEINFO: NET_DVR_TRADEINFO m_TradeInfo; memcpy(&m_TradeInfo, pBuf, sizeof(NET_DVR_TRADEINFO)); csTemp.Format("服务器%s收到卡号信息%s ", sDVRIP, m_TradeInfo.CardNumber); F_AddEvent(csTemp); TRACE(csTemp); break; default: break; } return 0; } ///////////////////////////////////////////////////////////////////////////// // CNewclientDlg dialog CNewclientDlg::CNewclientDlg(CWnd* pParent /*=NULL*/) : CDialog(CNewclientDlg::IDD, pParent) { //{{AFX_DATA_INIT(CNewclientDlg) m_yzd = 0; //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); memset( g_RecordInfo,0,sizeof(RECORD_INFO)*64 ); } void CNewclientDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CNewclientDlg) DDX_Control(pDX, IDC_COMBONETDELAY, m_NetDelayCtrl); DDX_Control(pDX, IDC_ALARMLED9, m_AlarmLed9); DDX_Control(pDX, IDC_ALARMLED8, m_AlarmLed8); DDX_Control(pDX, IDC_ALARMLED7, m_AlarmLed7); DDX_Control(pDX, IDC_ALARMLED6, m_AlarmLed6); DDX_Control(pDX, IDC_ALARMLED5, m_AlarmLed5); DDX_Control(pDX, IDC_ALARMLED4, m_AlarmLed4); DDX_Control(pDX, IDC_ALARMLED3, m_AlarmLed3); DDX_Control(pDX, IDC_ALARMLED2, m_AlarmLed2); DDX_Control(pDX, IDC_ALARMLED16, m_AlarmLed16); DDX_Control(pDX, IDC_ALARMLED15, m_AlarmLed15); DDX_Control(pDX, IDC_ALARMLED14, m_AlarmLed14); DDX_Control(pDX, IDC_ALARMLED13, m_AlarmLed13); DDX_Control(pDX, IDC_ALARMLED12, m_AlarmLed12); DDX_Control(pDX, IDC_ALARMLED11, m_AlarmLed11); DDX_Control(pDX, IDC_ALARMLED10, m_AlarmLed10); DDX_Control(pDX, IDC_ALARMLED1, m_AlarmLed1); DDX_Control(pDX, IDC_LED9, m_CapLed9); DDX_Control(pDX, IDC_LED8, m_CapLed8); DDX_Control(pDX, IDC_LED7, m_CapLed7); DDX_Control(pDX, IDC_LED6, m_CapLed6); DDX_Control(pDX, IDC_LED5, m_CapLed5); DDX_Control(pDX, IDC_LED4, m_CapLed4); DDX_Control(pDX, IDC_LED3, m_CapLed3); DDX_Control(pDX, IDC_LED2, m_CapLed2); DDX_Control(pDX, IDC_LED16, m_CapLed16); DDX_Control(pDX, IDC_LED15, m_CapLed15); DDX_Control(pDX, IDC_LED14, m_CapLed14); DDX_Control(pDX, IDC_LED13, m_CapLed13); DDX_Control(pDX, IDC_LED12, m_CapLed12); DDX_Control(pDX, IDC_LED11, m_CapLed11); DDX_Control(pDX, IDC_LED10, m_CapLed10); DDX_Control(pDX, IDC_LED1, m_CapLed1); DDX_Control(pDX, IDC_COMBOWNDNUM, m_windownum); DDX_Control(pDX, IDC_SLIDERYL, m_yl); DDX_Control(pDX, IDC_SLIDERSD, m_sd); DDX_Control(pDX, IDC_SLIDERLD, m_ld); DDX_Control(pDX, IDC_SLIDERDBD, m_dbd); DDX_Control(pDX, IDC_SLIDERBHD, m_bhd); DDX_Text(pDX, IDC_YZD, m_yzd); //}}AFX_DATA_MAP DDX_Control(pDX, IDC_PLAY, m_btn_Preview); DDX_Control(pDX, IDC_GETPICTURE, m_btn_GetPic); DDX_Control(pDX, IDC_SYSTEMCFG, m_btn_SetConfig); DDX_Control(pDX, IDC_VIDEOFILEPLAY, m_btn_Playback); //DDX_Control(pDX, IDC_BUTTONUP, m_Btn_Up); //DDX_Control(pDX, IDC_BUTTONDOWN, m_Btn_Down); //DDX_Control(pDX, IDC_BUTTONLEFT, m_Btn_Left); //DDX_Control(pDX, IDC_BUTTONRIGHT, m_Btn_Right); //DDX_Control(pDX, IDC_BUTTONTJLEFT, m_Btn_TJLeft); //DDX_Control(pDX, IDC_BUTTONTJRIGHT, m_Btn_TJRight); //DDX_Control(pDX, IDC_BUTTONJJLEFT, m_Btn_JJLeft); //DDX_Control(pDX, IDC_BUTTONJJRIGHT, m_Btn_JJRight); //DDX_Control(pDX, IDC_BUTTONGQLEFT, m_Btn_GQLeft); //DDX_Control(pDX, IDC_BUTTONGQRIGHT, m_Btn_GQRight); DDX_Control(pDX, IDC_BUTTONYZW, m_Btn_XZW); } BEGIN_MESSAGE_MAP(CNewclientDlg, CDialog) //{{AFX_MSG_MAP(CNewclientDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_EXIT, OnExit) ON_BN_CLICKED(IDC_AUDIOEXCHANGE, OnAudioexchange) ON_BN_CLICKED(IDC_SYSTEMCFG, OnSystemcfg) ON_BN_CLICKED(IDC_PLAY, OnVideonetplay) ON_BN_CLICKED(IDC_GETPICTURE, OnGetpicture) ON_BN_CLICKED(IDC_RECORD, OnRecord) ON_BN_CLICKED(IDC_EVENTLIST, OnEventlist) ON_BN_CLICKED(IDC_BUTTONALARMSET, OnButtonalarmset) ON_BN_CLICKED(IDC_VIDEOFILEPLAY, OnVideofileplay) ON_WM_TIMER() ON_WM_HSCROLL() ON_BN_CLICKED(IDC_BUTTONPOLL, OnButtonpoll) ON_BN_CLICKED(IDC_BUTTONYZW, OnButtonyzw) ON_CBN_SELCHANGE(IDC_COMBOWNDNUM, OnSelchangeCombowndnum) ON_CBN_SELCHANGE(IDC_COMBONETDELAY, OnSelchangeCombonetdelay) ON_BN_CLICKED(IDC_BUTTON1, OnButton1) ON_WM_MOVE() ON_BN_CLICKED(IDC_BUTTON2, OnButton2) ON_MESSAGE(WM_MYCOMMAND,OnMyCommand) ON_BN_CLICKED(IDC_CRUISE, OnCruise) //}}AFX_MSG_MAP ON_BN_CLICKED(IDC_BUTTONUP, OnBnClickedButtonup) ON_BN_CLICKED(IDC_BUTTONDOWN, OnBnClickedButtondown) ON_WM_CTLCOLOR() ON_WM_ERASEBKGND() ON_WM_LBUTTONUP() END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// //wParam: 消息类型 lParam: 发生异常的索引值。 LRESULT CNewclientDlg::OnMyCommand(WPARAM wParam, LPARAM lParam) { char tempbuf[256]; int i = 0; DWORD dwType = wParam; //异常类型 LONG lIndex = lParam; //相对应得操作返回的句柄 ZeroMemory(tempbuf,256); switch(dwType) { case EXCEPTION_AUDIOEXCHANGE: //语音对讲时网络异常 sprintf(tempbuf,"语音对讲时网络异常!!!"); TRACE("%s",tempbuf); if(lVoiceIndex != -1) { if(lIndex == lVoiceIndex) { if(NET_DVR_StopVoiceCom(lVoiceIndex)) { GetDlgItem(IDC_AUDIOEXCHANGE)->SetWindowText("语音对讲"); lVoiceIndex = -1; } else { MessageBox("停止语音对讲失败!", "温馨提示", MB_ICONINFORMATION); } } } break; case EXCEPTION_ALARM: //报警上传时网络异常 sprintf(tempbuf,"报警上传时网络异常!!!"); TRACE("%s",tempbuf); for(i = 0; i < MAXIPNUMBER; i++) { if(ClientParam.m_iAlarmHandle[i] >= 0) { if(lIndex == ClientParam.m_iAlarmHandle[i]) { if(NET_DVR_CloseAlarmChan(ClientParam.m_iAlarmHandle[i])) { ClientParam.m_iAlarmHandle[i] = -1; } else { CString sTemp; sTemp.Format("%s报警撤防失败!",serverinfo[i].m_csServerName); MessageBox(sTemp, "温馨提示", MB_ICONINFORMATION); } //m_pAlarmLed[i]->SetLed(CLed::LED_COLOR_GREEN,CLed::LED_DISABLED,CLed::LED_ROUND); } } } break; case EXCEPTION_PREVIEW: //网络预览时异常 sprintf(tempbuf,"网络预览时网络异常!!!"); TRACE("%s",tempbuf); if(ClientParam.m_bPlaying) { for(i = 0; i < MAXVIEWNUM; i++) { if(lIndex == myoutput[i].m_iPlayhandle) { if(myoutput[i].m_bFileSave) { F_StopClientRecord(i); } myoutput[i].StopNet(); } } } break; case EXCEPTION_SERIAL: //透明通道传输时异常 sprintf(tempbuf,"透明通道传输时网络异常!!!"); TRACE("%s",tempbuf); //TODO: 关闭透明通道 break; case EXCEPTION_RECONNECT: //预览的时候重连 sprintf(tempbuf,"预览时网络重连!!!"); TRACE("%s",tempbuf); break; default: break; } return 0L; } // CNewclientDlg message handlers BOOL CNewclientDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog //SetIcon(m_hIcon, TRUE); // Set big icon //SetIcon(m_hIcon, FALSE); // Set small icon CRect rc( 0,0,g_nFrameWeight,g_nFrameHeight ); this->MoveWindow( rc ); //调整控件位置 SetPos(); short shBtnColor = 30; m_btn_Preview.SetIcon(IDI_PREVIEW); //m_btn_Preview.SetTooltipText(_T("预览视频")); m_btn_Preview.DrawTransparent(TRUE); m_btn_GetPic.SetIcon(IDI_SAVEPIC); //m_btn_GetPic.SetTooltipText(_T("保存图片")); m_btn_GetPic.DrawTransparent(TRUE); m_btn_SetConfig.SetIcon(IDI_SETCONFIG); //m_btn_SetConfig.SetTooltipText(_T("系统配置")); m_btn_SetConfig.DrawTransparent(TRUE); m_btn_Playback.SetIcon(IDI_PLAYBACK);//, (int)BTNST_AUTO_GRAY); //m_btn_Playback.SetTooltipText(_T("视频回放")); m_btn_Playback.DrawTransparent(TRUE); TRACE("\nCurrent SDK Version is 0x%08x\n", NET_DVR_GetSDKBuildVersion()); // TODO: Add extra initialization here int i,j; CString sTemp; NET_DVR_DEVICEINFO DeviceInfo; LONG lUserID = 0; char csServerIP[16]; char cUserName[100]; char cPassword[100]; BOOL bLogin = FALSE; char cTemp[100]; DWORD dwReturned = 0; m_PTZTesttimer = 0; nUseCard =0; m_byException = 0; hBrush=::CreateSolidBrush(COLORREF(0xff0000)); ZeroMemory(cWorkDir, 256); GetCurrentDirectory(256, cWorkDir); TRACE("cWordDir = %s", cWorkDir); CStoneU_HC_OCXApp* pApp = (CStoneU_HC_OCXApp*)AfxGetApp(); m_iHardDriverNum = pApp->m_iDriverNum; for(i = 0; i < m_iHardDriverNum; i++) { m_cHardDriver[i] = pApp->m_cHardDriver[i]; } ClientParam.m_bCheckServerTime = FALSE; ClientParam.m_iCheckServerTime = 0; for(i = 0; i < MAXIPNUMBER; i++) { serverinfo[i].m_csServerName.Format(_T("")); serverinfo[i].m_iServerChannelNumber = -1; serverinfo[i].m_wServerPort = 8000; serverinfo[i].m_lServerID = -1; serverinfo[i].m_dwDevSoftVersion = 0; for(j = 0; j < MAXCHANNUM; j++) { allipinfo[i][j].m_lServerID = -1; allipinfo[i][j].m_iChannel = -1; allipinfo[i][j].m_iServerNum = -1; allipinfo[i][j].m_iChannelNum = -1; allipinfo[i][j].m_wServerport = 8000; allipinfo[i][j].m_bChoosed = FALSE; allipinfo[i][j].m_iSequence = -1; } } for(i=0; i<10; i++) { cTemp[i] = i; } ReadSurveillanceConfig(); for(i=0; i= 0) { strcpy(csServerIP, serverinfo[i].m_csServerIP); strncpy(cUserName, serverinfo[i].m_csServerAdminName, MAX_NAMELEN); strncpy(cPassword, serverinfo[i].m_csServerAdminPasswd, PASSWD_LEN); lUserID = NET_DVR_Login(csServerIP, serverinfo[i].m_wServerPort, cUserName, cPassword, &DeviceInfo); if(lUserID < 0) { CString sTemp; int nErr = NET_DVR_GetLastError(); if(nErr == NET_DVR_PASSWORD_ERROR) { sTemp.Format("%s 用户名密码错误! ", csServerIP); TRACE(sTemp); MessageBox(sTemp, "温馨提示", MB_ICONINFORMATION); } //TODO: 其他错误值 else { sTemp.Format("%s 由于网络原因或DVR忙, 注册失败! ", csServerIP); TRACE(sTemp); MessageBox(sTemp, "温馨提示", MB_ICONINFORMATION); } } else { NET_DVR_DEVICECFG DeviceCfg; if (!NET_DVR_GetDVRConfig(lUserID, NET_DVR_GET_DEVICECFG, 0, &DeviceCfg, sizeof(DeviceCfg), &dwReturned)) { sTemp.Format("%s 获取设备参数失败! ", csServerIP); TRACE(sTemp); MessageBox(sTemp, "温馨提示", MB_ICONINFORMATION); } else { serverinfo[i].m_dwDevSoftVersion = DeviceCfg.dwSoftwareVersion; } bLogin = TRUE; serverinfo[i].m_lServerID = lUserID; serverinfo[i].m_wServerType = DeviceInfo.byDVRType; serverinfo[i].m_lStartChannel = DeviceInfo.byStartChan; serverinfo[i].m_dwAlarmInNum = DeviceInfo.byAlarmInPortNum; serverinfo[i].m_dwAlarmOutNum = DeviceInfo.byAlarmOutPortNum; serverinfo[i].m_iServerChannelNumber = DeviceInfo.byChanNum; serverinfo[i].m_dwDiskNum = DeviceInfo.byDiskNum; ZeroMemory(cTemp, 100); memcpy(cTemp, DeviceInfo.sSerialNumber, SERIALNO_LEN); serverinfo[i].m_csSerialNumber.Format("%s", cTemp); for(j = 0; j < MAXCHANNUM; j++) { if(j < DeviceInfo.byChanNum) { allipinfo[i][j].m_lServerID = lUserID; allipinfo[i][j].m_csChanName.Format("通道%d",(j+DeviceInfo.byStartChan)); allipinfo[i][j].m_iChannel = j+DeviceInfo.byStartChan; if( (allipinfo[i][j].m_bChoosed) && (allipinfo[i][j].m_iSequence != -1) ) { selipinfo[allipinfo[i][j].m_iSequence].m_bChoosed = allipinfo[i][j].m_bChoosed; selipinfo[allipinfo[i][j].m_iSequence].m_csChanName = allipinfo[i][j].m_csChanName; selipinfo[allipinfo[i][j].m_iSequence].m_csIP = allipinfo[i][j].m_csIP; selipinfo[allipinfo[i][j].m_iSequence].m_csMultiIP = allipinfo[i][j].m_csMultiIP; selipinfo[allipinfo[i][j].m_iSequence].m_csPassword = allipinfo[i][j].m_csPassword; selipinfo[allipinfo[i][j].m_iSequence].m_csUser = allipinfo[i][j].m_csUser; selipinfo[allipinfo[i][j].m_iSequence].m_dwAddress = allipinfo[i][j].m_dwAddress; selipinfo[allipinfo[i][j].m_iSequence].m_dwAlarmlevel = allipinfo[i][j].m_dwAlarmlevel; selipinfo[allipinfo[i][j].m_iSequence].m_dwIPvalue = allipinfo[i][j].m_dwIPvalue; selipinfo[allipinfo[i][j].m_iSequence].m_dwMultiIPvalue = allipinfo[i][j].m_dwMultiIPvalue; selipinfo[allipinfo[i][j].m_iSequence].m_dwProtocol = allipinfo[i][j].m_dwProtocol; selipinfo[allipinfo[i][j].m_iSequence].m_iChannel = allipinfo[i][j].m_iChannel; selipinfo[allipinfo[i][j].m_iSequence].m_iSequence = allipinfo[i][j].m_iSequence; selipinfo[allipinfo[i][j].m_iSequence].m_lServerID = allipinfo[i][j].m_lServerID; selipinfo[allipinfo[i][j].m_iSequence].m_wJMQtype = allipinfo[i][j].m_wJMQtype; selipinfo[allipinfo[i][j].m_iSequence].m_wServerport = allipinfo[i][j].m_wServerport; selipinfo[allipinfo[i][j].m_iSequence].m_iServerNum = i; selipinfo[allipinfo[i][j].m_iSequence].m_iChannelNum = j; iSurveillanceNumber++; //TRACE("m_iSequence = %d csServerIP = %s m_lServerID = %d", allipinfo[i][j].m_iSequence, selipinfo[allipinfo[i][j].m_iSequence].m_csIP, selipinfo[allipinfo[i][j].m_iSequence].m_lServerID); } } else { allipinfo[i][j].m_lServerID = -1; allipinfo[i][j].m_csChanName.Format(""); allipinfo[i][j].m_iChannel = -1; } } } } } ClientParam.m_bCyclePlay = FALSE; ClientParam.m_iCycleTime = 20; ClientParam.m_bUseCard = FALSE; ClientParam.m_bNTSC = FALSE; ClientParam.m_bAutoRecord = FALSE; ClientParam.m_bCycleRecord = FALSE; ClientParam.m_iRecordFileInterval = 60; ClientParam.m_iStartRecordDriver = 1; ClientParam.m_iEndRecordDriver = m_iHardDriverNum - 1; ClientParam.m_csDownLoadPath.Format(_T("D:\\DownLoad")); ClientParam.m_csPictureSavePath.Format(_T("D:\\Picture")); ClientParam.m_csLogSavePath.Format(_T("D:\\EventLog")); sTemp.Format("%s\\", ClientParam.m_csDownLoadPath); CreateDirectory(sTemp, NULL); sTemp.Format("%s\\", ClientParam.m_csPictureSavePath); CreateDirectory(sTemp, NULL); sTemp.Format("%s\\", ClientParam.m_csLogSavePath); CreateDirectory(sTemp, NULL); for(i = 0; i < 7; i++) { for(j = 0; j < 4; j++) { ClientParam.m_ClientRecordTime[i][j].m_iStartHour = 0; ClientParam.m_ClientRecordTime[i][j].m_iStartMinute = 0; ClientParam.m_ClientRecordTime[i][j].m_iStartTime = 0; ClientParam.m_ClientRecordTime[i][j].m_iStopHour = 0; ClientParam.m_ClientRecordTime[i][j].m_iStopMinute = 0; ClientParam.m_ClientRecordTime[i][j].m_iStopTime = 0; } } ClientParam.m_bAllDiskFull = FALSE; ClientParam.m_bPlaying = FALSE; ClientParam.m_bCycling = FALSE; ClientParam.m_bNextPage = FALSE; ClientParam.m_bFrontPage = FALSE; ClientParam.m_bEnlarged = FALSE; ClientParam.m_bFullScreen = FALSE; ClientParam.m_bMultiScreen = FALSE; for(i = 0; i < MAXIPNUMBER; i++) ClientParam.m_iAlarmHandle[i] = -1; for(i = 0; i < MAXVIEWNUM; i++) { ClientParam.m_VideoInfo[i].m_iBrightness = DEFAULTBRIGHTNESS; ClientParam.m_VideoInfo[i].m_iContrast = DEFAULTCONTRAST; ClientParam.m_VideoInfo[i].m_iSaturation = DEFAULTSATURATION; ClientParam.m_VideoInfo[i].m_iHue = DEFAULTHUE; } ClientParam.m_Volume = DEFAULTVOLUME; ReadClientConfig(); m_cCurrentRecordDriver = m_cHardDriver[ClientParam.m_iStartRecordDriver]; autorecordtimer = 0; autorecordtimer = SetTimer(AUTORECORD_TIMER, 2000, NULL); if(ClientParam.m_bCheckServerTime) { TRACE("启动硬盘录像机校时时钟,校时时间是每天的%06d", ClientParam.m_iCheckServerTime); checkservertimer = 0; checkservertimer = SetTimer(CHECKSERVER_TIMER, 1000, NULL); } for(i = 0; i < MAXALARMIN; i++) { alarminfo[i].m_csIP.Format(_T("")); alarminfo[i].m_csUsername.Format(_T("")); alarminfo[i].m_csPassword.Format(_T("")); alarminfo[i].m_lServerID = -1; alarminfo[i].m_iChannel = -1; alarminfo[i].m_iAlarmLevel = -1; alarminfo[i].m_iAlarmType = -1; alarminfo[i].m_iPortIndex = -1; alarminfo[i].m_wServerPort = 8000; } m_iAlarmNumber = 0; m_ld.SetRange(1,10,TRUE); m_sd.SetRange(1,10,TRUE); m_bhd.SetRange(1,10,TRUE); m_dbd.SetRange(1,10,TRUE); m_yl.SetRange(1,100,TRUE); m_ld.SetPos(DEFAULTBRIGHTNESS); m_sd.SetPos(DEFAULTHUE); m_bhd.SetPos(DEFAULTSATURATION); m_dbd.SetPos(DEFAULTCONTRAST); m_yl.SetPos(DEFAULTVOLUME); m_mybuttonup.SubclassDlgItem(IDC_BUTTONUP,this); m_mybuttondown.SubclassDlgItem(IDC_BUTTONDOWN,this); m_mybuttonleft.SubclassDlgItem(IDC_BUTTONLEFT,this); m_mybuttonright.SubclassDlgItem(IDC_BUTTONRIGHT,this); m_mybuttontjright.SubclassDlgItem(IDC_BUTTONTJRIGHT,this); m_mybuttontjleft.SubclassDlgItem(IDC_BUTTONTJLEFT,this); m_mybuttonjjleft.SubclassDlgItem(IDC_BUTTONJJLEFT,this); m_mybuttonjjright.SubclassDlgItem(IDC_BUTTONJJRIGHT,this); m_mybuttongqleft.SubclassDlgItem(IDC_BUTTONGQLEFT,this); m_mybuttongqright.SubclassDlgItem(IDC_BUTTONGQRIGHT,this); InitLed(); m_iSubWndCreated = 0; for (i=0;i=2 && iSurveillanceNumber<=4 ) WINDOWNUM = 4; else if( iSurveillanceNumber>=5 && iSurveillanceNumber<=9 ) WINDOWNUM = 9; else if( iSurveillanceNumber>=10 && iSurveillanceNumber<=16 ) WINDOWNUM = 16; else if( iSurveillanceNumber>=17 && iSurveillanceNumber<=33 ) WINDOWNUM = 33; else if( iSurveillanceNumber>=34 && iSurveillanceNumber<=64 ) WINDOWNUM = 64; channelcount = 0; if(ClientParam.m_bUseCard) { F_InitDecodeCard(); } mycurwin.Create(IDD_CURWIN,this); ArrayWindow(0,WINDOWNUM); MoveCurWin(WINDOWNUM,0); hVideoBeeper=NULL; //报警事件 hBeepThread=NULL; //报警线程 hVideoBeeper = ::CreateEvent(NULL, // no security attributes TRUE, // auto-reset event FALSE, // initial state is signaled NULL // object name ); ResetEvent(hVideoBeeper); freespacetimer = 0; freespacetimer = SetTimer(FREESPACE_TIMER, 5000, NULL); fileintervaltimer = 0; fileintervaltimer = SetTimer(FILEINTERVAL_TIMER, 2000, NULL); //SDK中收到DVR发过来的信息需要上传的通过回调函数实现,比如报警信息,日志信息等。 NET_DVR_SetDVRMessCallBack_NEW(MessageCallback); //SDK中检测到异常通过消息的方式上传,比如网络断开 NET_DVR_SetDVRMessage(WM_MYCOMMAND, this->m_hWnd); // 设置连接的超时设置 NET_DVR_SetConnectTime(5000,1); //7200端口是监听端口 if(!NET_DVR_StartListen(NULL,7200)) { CString sTemp; sTemp.Format("ERROR: NET_DVR_StartListen = %d \n", NET_DVR_GetLastError()); MessageBox(sTemp, "温馨提示", MB_ICONINFORMATION); } cycletimer = 0; m_NetDelayCtrl.SetCurSel(g_nNetDelay); //预览,布防 OnVideonetplay(); SetTimer(55, 2000, NULL); g_NewClientDlg = this; MainDlg = this; CRect rc1,rc2; GetDlgItem(IDC_STATIC4)->GetWindowRect(rc1); GetDlgItem(IDC_VEDIO_SHOW)->GetWindowRect(rc2); //this->MoveWindow( CRect( 0,0,rc1.right,rc2.bottom ) ); return TRUE; // return TRUE unless you set the focus to a control } void CNewclientDlg::SetPos() { CRect rMain; this->GetWindowRect( rMain ); ScreenToClient( &rMain ); int W=0,H=0; CRect rcSta2; GetDlgItem(IDC_STATIC2)->GetWindowRect( rcSta2 ); W = rcSta2.Width(); H = rcSta2.Height(); rcSta2.right = rMain.right-10; rcSta2.left = rcSta2.right-W ; rcSta2.top = rMain.top+10; rcSta2.bottom = rcSta2.top+H; GetDlgItem(IDC_STATIC2)->MoveWindow( rcSta2 ); CRect rcGrid1; GetDlgItem(IDC_STA_GRID1)->GetWindowRect( rcGrid1 ); W = rcGrid1.Width(); H = rcGrid1.Height(); rcGrid1.left = rcSta2.left+7 ; rcGrid1.right = rcGrid1.left+W; rcGrid1.top = rcSta2.top+13; rcGrid1.bottom = rcGrid1.top+H; GetDlgItem(IDC_STA_GRID1)->MoveWindow( rcGrid1 ); CRect rcGrid2; rcGrid2.left = rcGrid1.right+2 ; rcGrid2.right = rcGrid2.left+W; rcGrid2.top = rcGrid1.top; rcGrid2.bottom = rcGrid1.bottom; GetDlgItem(IDC_STA_GRID2)->MoveWindow( rcGrid2 ); CRect rcGrid3; rcGrid3.left = rcGrid2.right+2 ; rcGrid3.right = rcGrid3.left+W; rcGrid3.top = rcGrid2.top; rcGrid3.bottom = rcGrid2.bottom; GetDlgItem(IDC_STA_GRID3)->MoveWindow( rcGrid3 ); CRect rcGrid4; rcGrid4.left = rcSta2.left+7 ; rcGrid4.right = rcGrid4.left+W; rcGrid4.top = rcGrid1.bottom+2; rcGrid4.bottom = rcGrid4.top+H; GetDlgItem(IDC_STA_GRID4)->MoveWindow( rcGrid4 ); CRect rcGrid5; rcGrid5.left = rcGrid4.right+2 ; rcGrid5.right = rcGrid5.left+W; rcGrid5.top = rcGrid4.top; rcGrid5.bottom = rcGrid4.bottom; GetDlgItem(IDC_STA_GRID5)->MoveWindow( rcGrid5 ); CRect rcGrid6; rcGrid6.left = rcGrid5.right+2 ; rcGrid6.right = rcGrid6.left+W; rcGrid6.top = rcGrid4.top; rcGrid6.bottom = rcGrid4.bottom; GetDlgItem(IDC_STA_GRID6)->MoveWindow( rcGrid6 ); //////////////////// CRect rcSta17; GetDlgItem(IDC_STATIC17)->GetWindowRect( rcSta17 ); W = rcSta17.Width(); H = rcSta17.Height(); rcSta17.right = rcSta2.right; rcSta17.left = rcSta2.left ; rcSta17.top = rcSta2.bottom+10; rcSta17.bottom = rcSta17.top+H; GetDlgItem(IDC_STATIC17)->MoveWindow( rcSta17 ); CRect rcBtnPlay; GetDlgItem(IDC_PLAY)->GetWindowRect( rcBtnPlay ); W = rcBtnPlay.Width(); H = rcBtnPlay.Height(); rcBtnPlay.left = rcSta17.left+3 ; rcBtnPlay.right = rcSta17.right-3; rcBtnPlay.top = rcSta17.top+10; rcBtnPlay.bottom = rcBtnPlay.top+H; GetDlgItem(IDC_PLAY)->MoveWindow( rcBtnPlay ); CRect rcBtnGetPic; rcBtnGetPic.left = rcSta17.left+3 ; rcBtnGetPic.right = rcSta17.right-3; rcBtnGetPic.top = rcBtnPlay.bottom+2; rcBtnGetPic.bottom = rcBtnGetPic.top+H; GetDlgItem(IDC_GETPICTURE)->MoveWindow( rcBtnGetPic ); CRect rcBtnSet; rcBtnSet.left = rcSta17.left+3 ; rcBtnSet.right = rcSta17.right-3; rcBtnSet.top = rcBtnGetPic.bottom+2; rcBtnSet.bottom = rcBtnSet.top+H; GetDlgItem(IDC_SYSTEMCFG)->MoveWindow( rcBtnSet ); CRect rcBtnPlayBack; rcBtnPlayBack.left = rcSta17.left+3 ; rcBtnPlayBack.right = rcSta17.right-3; rcBtnPlayBack.top = rcBtnSet.bottom+2; rcBtnPlayBack.bottom = rcBtnPlayBack.top+H; GetDlgItem(IDC_VIDEOFILEPLAY)->MoveWindow( rcBtnPlayBack ); //////////////// CRect rcSta4; GetDlgItem(IDC_STATIC4)->GetWindowRect( rcSta4 ); W = rcSta4.Width(); H = rcSta4.Height(); rcSta4.right = rcSta2.right; rcSta4.left = rcSta2.left ; rcSta4.top = rcSta17.bottom+10; rcSta4.bottom = rcSta4.top+H; GetDlgItem(IDC_STATIC4)->MoveWindow( rcSta4 ); CRect rcBtnUp; GetDlgItem(IDC_BUTTONUP)->GetWindowRect( rcBtnUp ); W = rcBtnUp.Width(); H = rcBtnUp.Height(); rcBtnUp.left = rcSta4.left+rcSta4.Width()/2-W/2 ; rcBtnUp.right = rcBtnUp.left+W; rcBtnUp.top = rcSta4.top+15; rcBtnUp.bottom = rcBtnUp.top+H; GetDlgItem(IDC_BUTTONUP)->MoveWindow( rcBtnUp ); CRect rcSta5; GetDlgItem(IDC_STATIC5)->GetWindowRect( rcSta5 ); W = rcSta5.Width(); H = rcSta5.Height(); rcSta5.left = rcSta4.left+rcSta4.Width()/2-W/2 ; rcSta5.right = rcBtnUp.left+W; rcSta5.top = rcBtnUp.bottom+5; rcSta5.bottom = rcSta5.top+H; GetDlgItem(IDC_STATIC5)->MoveWindow( rcSta5 ); CRect rcBtnDown; GetDlgItem(IDC_BUTTONDOWN)->GetWindowRect( rcBtnDown ); W = rcBtnDown.Width(); H = rcBtnDown.Height(); rcBtnDown.left = rcSta4.left+rcSta4.Width()/2-W/2 ; rcBtnDown.right = rcBtnDown.left+W; rcBtnDown.top = rcSta5.bottom+5; rcBtnDown.bottom = rcBtnDown.top+H; GetDlgItem(IDC_BUTTONDOWN)->MoveWindow( rcBtnDown ); CRect rcBtnLeft; GetDlgItem(IDC_BUTTONLEFT)->GetWindowRect( rcBtnLeft ); W = rcBtnLeft.Width(); H = rcBtnLeft.Height(); rcBtnLeft.right = rcSta5.left-10; rcBtnLeft.left = rcBtnLeft.right-W; rcBtnLeft.top = rcSta5.top+0; rcBtnLeft.bottom = rcBtnLeft.top+H; GetDlgItem(IDC_BUTTONLEFT)->MoveWindow( rcBtnLeft ); CRect rcBtnRight; GetDlgItem(IDC_BUTTONRIGHT)->GetWindowRect( rcBtnRight ); W = rcBtnRight.Width(); H = rcBtnRight.Height(); rcBtnRight.left = rcSta5.right+10; rcBtnRight.right = rcBtnRight.left+W; rcBtnRight.top = rcSta5.top+0; rcBtnRight.bottom = rcBtnLeft.top+H; GetDlgItem(IDC_BUTTONRIGHT)->MoveWindow( rcBtnRight ); CRect rcSta6; GetDlgItem(IDC_STATIC6)->GetWindowRect( rcSta6 ); W = rcSta6.Width(); H = rcSta6.Height(); rcSta6.left = rcSta4.left+rcSta4.Width()/2-W/2 ; rcSta6.right = rcSta6.left+W; rcSta6.top = rcBtnDown.bottom+20; rcSta6.bottom = rcSta6.top+H; GetDlgItem(IDC_STATIC6)->MoveWindow( rcSta6 ); CRect rcBtnJLLeft; GetDlgItem(IDC_BUTTONTJLEFT)->GetWindowRect( rcBtnJLLeft ); W = rcBtnJLLeft.Width(); H = rcBtnJLLeft.Height(); rcBtnJLLeft.right = rcSta6.left-10; rcBtnJLLeft.left = rcBtnJLLeft.right-W; rcBtnJLLeft.top = rcSta6.top; rcBtnJLLeft.bottom = rcBtnJLLeft.top+H; GetDlgItem(IDC_BUTTONTJLEFT)->MoveWindow( rcBtnJLLeft ); CRect rcBtnJLRight; GetDlgItem(IDC_BUTTONTJRIGHT)->GetWindowRect( rcBtnJLRight ); W = rcBtnJLRight.Width(); H = rcBtnJLRight.Height(); rcBtnJLRight.left = rcSta6.right+10; rcBtnJLRight.right = rcBtnJLRight.left+W; rcBtnJLRight.top = rcSta6.top; rcBtnJLRight.bottom = rcBtnJLRight.top+H; GetDlgItem(IDC_BUTTONTJRIGHT)->MoveWindow( rcBtnJLRight ); CRect rcSta7; GetDlgItem(IDC_STATIC7)->GetWindowRect( rcSta7 ); W = rcSta7.Width(); H = rcSta7.Height(); rcSta7.left = rcSta4.left+rcSta4.Width()/2-W/2 ; rcSta7.right = rcSta7.left+W; rcSta7.top = rcSta6.bottom+10; rcSta7.bottom = rcSta7.top+H; GetDlgItem(IDC_STATIC7)->MoveWindow( rcSta7 ); CRect rcBtnOJJLeft; GetDlgItem(IDC_BUTTONJJLEFT)->GetWindowRect( rcBtnOJJLeft ); W = rcBtnOJJLeft.Width(); H = rcBtnOJJLeft.Height(); rcBtnOJJLeft.right = rcSta7.left-10; rcBtnOJJLeft.left = rcBtnOJJLeft.right-W; rcBtnOJJLeft.top = rcSta7.top; rcBtnOJJLeft.bottom = rcBtnOJJLeft.top+H; GetDlgItem(IDC_BUTTONJJLEFT)->MoveWindow( rcBtnOJJLeft ); CRect rcBtnJJRight; GetDlgItem(IDC_BUTTONJJRIGHT)->GetWindowRect( rcBtnJJRight ); W = rcBtnJJRight.Width(); H = rcBtnJJRight.Height(); rcBtnJJRight.left = rcSta7.right+10; rcBtnJJRight.right = rcBtnJJRight.left+W; rcBtnJJRight.top = rcSta7.top; rcBtnJJRight.bottom = rcBtnJJRight.top+H; GetDlgItem(IDC_BUTTONJJRIGHT)->MoveWindow( rcBtnJJRight ); CRect rcSta8; GetDlgItem(IDC_STATIC8)->GetWindowRect( rcSta8 ); W = rcSta8.Width(); H = rcSta8.Height(); rcSta8.left = rcSta4.left+rcSta4.Width()/2-W/2 ; rcSta8.right = rcSta8.left+W; rcSta8.top = rcSta7.bottom+10; rcSta8.bottom = rcSta8.top+H; GetDlgItem(IDC_STATIC8)->MoveWindow( rcSta8 ); CRect rcBtnOGQLeft; GetDlgItem(IDC_BUTTONGQLEFT)->GetWindowRect( rcBtnOGQLeft ); W = rcBtnOGQLeft.Width(); H = rcBtnOGQLeft.Height(); rcBtnOGQLeft.right = rcSta8.left-10; rcBtnOGQLeft.left = rcBtnOGQLeft.right-W; rcBtnOGQLeft.top = rcSta8.top; rcBtnOGQLeft.bottom = rcBtnOGQLeft.top+H; GetDlgItem(IDC_BUTTONGQLEFT)->MoveWindow( rcBtnOGQLeft ); CRect rcBtnGQRight; GetDlgItem(IDC_BUTTONGQRIGHT)->GetWindowRect( rcBtnGQRight ); W = rcBtnGQRight.Width(); H = rcBtnGQRight.Height(); rcBtnGQRight.left = rcSta8.right+10; rcBtnGQRight.right = rcBtnGQRight.left+W; rcBtnGQRight.top = rcSta8.top; rcBtnGQRight.bottom = rcBtnGQRight.top+H; GetDlgItem(IDC_BUTTONGQRIGHT)->MoveWindow( rcBtnGQRight ); CRect rcEditYZD; GetDlgItem(IDC_YZD)->GetWindowRect( rcEditYZD ); W = rcEditYZD.Width(); H = rcEditYZD.Height(); rcEditYZD.left = rcSta4.left+rcSta4.Width()/2-W/2 ; rcEditYZD.right = rcEditYZD.left+W; rcEditYZD.top = rcBtnGQRight.bottom+20; rcEditYZD.bottom = rcEditYZD.top+H; GetDlgItem(IDC_YZD)->MoveWindow( rcEditYZD ); CRect rcBtnYZW; GetDlgItem(IDC_BUTTONYZW)->GetWindowRect( rcBtnYZW ); W = rcBtnYZW.Width(); H = rcBtnYZW.Height(); rcBtnYZW.left = rcSta4.left+rcSta4.Width()/2-W/2 ; rcBtnYZW.right = rcBtnYZW.left+W; rcBtnYZW.top = rcEditYZD.bottom+3; rcBtnYZW.bottom = rcBtnYZW.top+H; GetDlgItem(IDC_BUTTONYZW)->MoveWindow( rcBtnYZW ); CRect rcStaShow; rcStaShow.left = 10; rcStaShow.right = rcSta2.left-5;; rcStaShow.top = 0; rcStaShow.bottom = rMain.bottom-10; GetDlgItem(IDC_VEDIO_SHOW)->MoveWindow( rcStaShow ); } void CNewclientDlg::SetAlarm() { int imageindex,selectindex; int ipnum; CString sTemp; int nIndex=0; for(int i = 0; i < MAXIPNUMBER; i++) { if(serverinfo[i].m_iServerChannelNumber >= 0) { //是否有信号 NET_DVR_WORKSTATE WorkState; if(!NET_DVR_GetDVRWorkState(i, &WorkState)) { //CString sTemp; //sTemp.Format("ERROR: NET_DVR_GetDVRWorkState = %d \n", NET_DVR_GetLastError()); //TRACE(sTemp); //AfxMessageBox("获取设备状态失败!"); //return; } for(int k=0; k= 0) // { // if(NET_DVR_CloseAlarmChan(ClientParam.m_iAlarmHandle[ipnum])) // { // ClientParam.m_iAlarmHandle[ipnum] = -1; // } // else // { // m_tree.SetItemImage(node1,1,1); // sTemp.Format("%s报警撤防失败! lasterror = %d ",serverinfo[ipnum].m_csServerName, NET_DVR_GetLastError()); // AfxMessageBox(sTemp); // } // } // } // node1=m_tree.GetNextSiblingItem(node1); //} //m_bOK = TRUE; //AfxMessageBox("布防撤防完成!"); } void CNewclientDlg::OnSysCommand(UINT nID, LPARAM lParam) { //if ((nID & 0xFFF0) == IDM_ABOUTBOX) //{ // CAboutDlg dlgAbout; // dlgAbout.DoModal(); //} //else { CDialog::OnSysCommand(nID, lParam); } } // If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework. void CNewclientDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle 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; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); ShowGrid(); } } // The system calls this to obtain the cursor to display while the user drags // the minimized window. HCURSOR CNewclientDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } void CNewclientDlg::OnExit() { // TODO: Add your control notification handler code here if(IDOK != MessageBox("确定要退出吗?","警告",IDOK)) return; Resoure(); CDialog::OnCancel(); } void CNewclientDlg::Resoure() { int i = 0; F_StopPlay(); if(lVoiceIndex != -1) { if(NET_DVR_StopVoiceCom(lVoiceIndex)) { GetDlgItem(IDC_AUDIOEXCHANGE)->SetWindowText("语音对讲"); lVoiceIndex = -1; } else { MessageBox("停止语音对讲失败!", "温馨提示", MB_ICONINFORMATION); } } if(cycletimer) { KillTimer(CYCLE_TIMER); cycletimer = 0; } if(freespacetimer) { KillTimer(FREESPACE_TIMER); freespacetimer = 0; } if(fileintervaltimer) { KillTimer(FILEINTERVAL_TIMER); fileintervaltimer = 0; } if(checkservertimer) { // TRACE("关闭校时时钟"); KillTimer(CHECKSERVER_TIMER); checkservertimer = 0; } if(hVideoBeeper) SetEvent(hVideoBeeper); if(ClientParam.m_bUseCard) { NET_DVR_ReleaseDevice_Card(); NET_DVR_ReleaseDDraw_Card(); } NET_DVR_StopListen(); for(i=0; i= 0) { if(serverinfo[i].m_lServerID != -1) { if(ClientParam.m_iAlarmHandle[i] >= 0) { if(NET_DVR_CloseAlarmChan(ClientParam.m_iAlarmHandle[i])) { ClientParam.m_iAlarmHandle[i] = -1; } } if(!NET_DVR_Logout(serverinfo[i].m_lServerID)) { CString sTemp; sTemp.Format("ERROR: %s NET_DVR_Logout = %d",serverinfo[i].m_csServerIP, NET_DVR_GetLastError()); TRACE(sTemp); } } } } } void CNewclientDlg::ArrayWindow(WORD iPos, WORD iNumber) { int i = 0; CRect crect; GetClientRect(&crect); WORD iWidth,iHeight; NET_DVR_DISPLAY_PARA displaypara; CRect rc; GetDlgItem(IDC_VEDIO_SHOW)->GetWindowRect(rc); WORD WIDTH = rc.Width(); WORD HEIGHT = rc.Height(); for (i = 0;i < MAXVIEWNUM;i++) { myoutput[i].ShowWindow(SW_HIDE); } switch(iNumber) { case 4: if(ClientParam.m_bMultiScreen) { MYVIEW_LEFT = 0; MYVIEW_TOP = 0; iWidth = 510; iHeight = 383; } else { MYVIEW_LEFT = LEFT_DISTANCE; MYVIEW_TOP = TOP_DISTANCE; iWidth = int( (float)WIDTH/2 ); iHeight = int( (float)HEIGHT/2 ); } bLargeWnd = FALSE; for(i = 0; i < 2; i++) { myoutput[i].MoveWindow(MYVIEW_LEFT+i*iWidth+i*1,MYVIEW_TOP,iWidth,iHeight,true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+i*iWidth+i*1; myoutput[i].m_display_para.nTop = MYVIEW_TOP; myoutput[i].m_display_para.nWidth = iWidth; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } for(i = 2; i < 4; i++) { myoutput[i].MoveWindow(MYVIEW_LEFT+(i-2)*iWidth+(i-2)*1,MYVIEW_TOP+iHeight+2,iWidth,iHeight,true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-2)*iWidth+(i-2)*1/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP+iHeight+2; myoutput[i].m_display_para.nWidth = iWidth/*+2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } break; case 9: if(ClientParam.m_bMultiScreen) { MYVIEW_LEFT = 0; MYVIEW_TOP = 0; iWidth = 339; iHeight = 254; } else { MYVIEW_LEFT = LEFT_DISTANCE; MYVIEW_TOP = TOP_DISTANCE; iWidth = int( (float)WIDTH/3 ); iHeight = int( (float)HEIGHT/3 ); } bLargeWnd = FALSE; for (i=0;i<3;i++) { myoutput[i].MoveWindow(MYVIEW_LEFT+i*iWidth+i*1,MYVIEW_TOP,iWidth,iHeight,true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+i*iWidth+i*1/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP; myoutput[i].m_display_para.nWidth = iWidth/*+2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } for (i=3;i<6;i++) { myoutput[i].MoveWindow(MYVIEW_LEFT+(i-3)*iWidth+(i-3)*1,MYVIEW_TOP+iHeight+2,iWidth,iHeight,true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-3)*iWidth+(i-3)*1/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP+iHeight+2; myoutput[i].m_display_para.nWidth = iWidth/*+2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } for (i=6;i<9;i++) { myoutput[i].MoveWindow(MYVIEW_LEFT+(i-6)*iWidth+(i-6)*1,MYVIEW_TOP+2*iHeight+4,iWidth,iHeight,true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-6)*iWidth+(i-6)*1/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*2; myoutput[i].m_display_para.nWidth = iWidth/*+2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } break; case 16: if(ClientParam.m_bMultiScreen) { iWidth = 254; iHeight = 190; MYVIEW_LEFT = 0; MYVIEW_TOP = 0; } else { MYVIEW_LEFT = LEFT_DISTANCE; MYVIEW_TOP = TOP_DISTANCE; iWidth = int( (float)WIDTH/4 ); iHeight = int( (float)HEIGHT/4 ); } bLargeWnd = FALSE; for(i = 0; i < 4; i++) { myoutput[i].MoveWindow(MYVIEW_LEFT+i*iWidth+i*1, MYVIEW_TOP, iWidth, iHeight, true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+i*iWidth+i*1/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP; myoutput[i].m_display_para.nWidth = iWidth/*+2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } for(i = 4; i < 8; i++) { myoutput[i].MoveWindow(MYVIEW_LEFT+(i-4)*iWidth+(i-4)*1, MYVIEW_TOP+iHeight+2, iWidth, iHeight, true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-4)*iWidth+(i-4)*1/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP+iHeight+2; myoutput[i].m_display_para.nWidth = iWidth/*+2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } for(i = 8; i < 12; i++) { myoutput[i].MoveWindow(MYVIEW_LEFT+(i-8)*iWidth+(i-8)*1, MYVIEW_TOP+iHeight*2+4, iWidth, iHeight, true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-8)*iWidth+(i-8)*1/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*2; myoutput[i].m_display_para.nWidth = iWidth/*+2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } for(i = 12; i < 16; i++) { myoutput[i].MoveWindow(MYVIEW_LEFT+(i-12)*iWidth+(i-12)*1, MYVIEW_TOP+iHeight*3+6, iWidth, iHeight, true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-12)*iWidth+(i-12)*1/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*3; myoutput[i].m_display_para.nWidth = iWidth/*+2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } break; case 33: if(ClientParam.m_bMultiScreen) { iWidth = 254; iHeight = 190; MYVIEW_LEFT = 0; MYVIEW_TOP = 0; } else { MYVIEW_LEFT = LEFT_DISTANCE; MYVIEW_TOP = TOP_DISTANCE; iWidth = int( (float)WIDTH/6 ); iHeight = int( (float)HEIGHT/6 ); } bLargeWnd = FALSE; for(i = 0; i < 1; i++) { myoutput[i].MoveWindow(MYVIEW_LEFT+i*iWidth+i*1, MYVIEW_TOP, 2*iWidth, 2*iHeight+2, true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+i*iWidth+i*1/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP; myoutput[i].m_display_para.nWidth = iWidth*2; myoutput[i].m_display_para.nHeight = iHeight*2+2; myoutput[i].ShowWindow(SW_SHOW); } for(i = 1; i < 5; i++) { myoutput[i].MoveWindow(MYVIEW_LEFT+(i+1)*iWidth+i*1, MYVIEW_TOP, iWidth, iHeight, true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i+1)*iWidth+i*1/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP; myoutput[i].m_display_para.nWidth = iWidth/*+2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } for(i = 5; i < 9; i++) { myoutput[i].MoveWindow(MYVIEW_LEFT+(i-3)*iWidth+(i-3)*1, MYVIEW_TOP+iHeight+2, iWidth, iHeight, true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-3)*iWidth+(i-3)*1/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP+iHeight+2; myoutput[i].m_display_para.nWidth = iWidth/*+2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } for(i = 9; i < 15; i++) { myoutput[i].MoveWindow(MYVIEW_LEFT+(i-9)*iWidth+(i-9)*1, MYVIEW_TOP+iHeight*2+4, iWidth, iHeight, true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-9)*iWidth+(i-9)*1/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*2; myoutput[i].m_display_para.nWidth = iWidth/*+2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } for(i = 15; i < 21; i++) { myoutput[i].MoveWindow(MYVIEW_LEFT+(i-15)*iWidth+(i-15)*1, MYVIEW_TOP+iHeight*3+6, iWidth, iHeight, true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-15)*iWidth+(i-15)*1/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*3; myoutput[i].m_display_para.nWidth = iWidth/*+2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } for(i = 21; i < 27; i++) { myoutput[i].MoveWindow(MYVIEW_LEFT+(i-21)*iWidth+(i-21)*1, MYVIEW_TOP+iHeight*4+8, iWidth, iHeight, true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-21)*iWidth+(i-21)*1/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*4; myoutput[i].m_display_para.nWidth = iWidth/*+2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } for(i = 27; i < 33; i++) { myoutput[i].MoveWindow(MYVIEW_LEFT+(i-27)*iWidth+(i-27)*1, MYVIEW_TOP+iHeight*5+10, iWidth, iHeight, true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-27)*iWidth+(i-27)*1/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*5; myoutput[i].m_display_para.nWidth = iWidth/*+2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } break; case 64: if(ClientParam.m_bMultiScreen) { iWidth = 254; iHeight = 190; MYVIEW_LEFT = 0; MYVIEW_TOP = 0; } else { MYVIEW_LEFT = LEFT_DISTANCE; MYVIEW_TOP = TOP_DISTANCE; iWidth = int( (float)WIDTH/8 ); iHeight = int( (float)HEIGHT/8 ); } bLargeWnd = FALSE; for(i = 0; i < 8; i++) { myoutput[i].MoveWindow(MYVIEW_LEFT+i*iWidth+i*1, MYVIEW_TOP, iWidth, iHeight, true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+i*iWidth+i*1/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP; myoutput[i].m_display_para.nWidth = iWidth/*+2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } for(i = 8; i < 16; i++) { myoutput[i].MoveWindow(MYVIEW_LEFT+(i-8)*iWidth+(i-8)*1, MYVIEW_TOP+iHeight+2, iWidth, iHeight, true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-8)*iWidth+(i-8)*1/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP+iHeight+2; myoutput[i].m_display_para.nWidth = iWidth/*+2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } for(i = 16; i < 24; i++) { myoutput[i].MoveWindow(MYVIEW_LEFT+(i-16)*iWidth+(i-16)*1, MYVIEW_TOP+iHeight*2+4, iWidth, iHeight, true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-16)*iWidth+(i-16)*1/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*2; myoutput[i].m_display_para.nWidth = iWidth/*+2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } for(i = 24; i < 32; i++) { myoutput[i].MoveWindow(MYVIEW_LEFT+(i-24)*iWidth+(i-24)*1, MYVIEW_TOP+iHeight*3+6, iWidth, iHeight, true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-24)*iWidth+(i-24)*1/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*3; myoutput[i].m_display_para.nWidth = iWidth/*+2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } for(i = 32; i < 40; i++) { myoutput[i].MoveWindow(MYVIEW_LEFT+(i-32)*iWidth+(i-32)*1, MYVIEW_TOP+iHeight*4+8, iWidth, iHeight, true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-32)*iWidth+(i-32)*1/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*4; myoutput[i].m_display_para.nWidth = iWidth/*+2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } for(i = 40; i < 48; i++) { myoutput[i].MoveWindow(MYVIEW_LEFT+(i-40)*iWidth+(i-40)*1, MYVIEW_TOP+iHeight*5+10, iWidth, iHeight, true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-40)*iWidth+(i-40)*1/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*5; myoutput[i].m_display_para.nWidth = iWidth/*+2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } for(i = 48; i < 56; i++) { myoutput[i].MoveWindow(MYVIEW_LEFT+(i-48)*iWidth+(i-48)*1, MYVIEW_TOP+iHeight*6+12, iWidth, iHeight, true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-48)*iWidth+(i-48)*1/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*6; myoutput[i].m_display_para.nWidth = iWidth/*+2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } for(i = 56; i < 64; i++) { myoutput[i].MoveWindow(MYVIEW_LEFT+(i-56)*iWidth+(i-56)*1, MYVIEW_TOP+iHeight*7+14, iWidth, iHeight, true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-56)*iWidth+(i-56)*1/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*7; myoutput[i].m_display_para.nWidth = iWidth/*+2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } break; case 1: if(ClientParam.m_bMultiScreen) { iWidth = 1024; iHeight = 768; MYVIEW_LEFT = 0; MYVIEW_TOP = 0; } else { MYVIEW_LEFT = LEFT_DISTANCE; MYVIEW_TOP = TOP_DISTANCE; iWidth = WIDTH; iHeight = HEIGHT; } myoutput[iPos].MoveWindow(MYVIEW_LEFT,MYVIEW_TOP,iWidth,iHeight,true); myoutput[iPos].m_display_para.nLeft = MYVIEW_LEFT; myoutput[iPos].m_display_para.nTop = MYVIEW_TOP; myoutput[iPos].m_display_para.nWidth = iWidth; myoutput[iPos].m_display_para.nHeight = iHeight; myoutput[iPos].ShowWindow(SW_SHOW); break; default: break; } if(ClientParam.m_bUseCard) { TRACE("Use Decode Card"); TRACE("iNumber = %d", iNumber); NET_DVR_ClearSurface_Card(); for(i = 0; i < MAXVIEWNUM; i++) { displaypara.bToScreen = 0; displaypara.bToVideoOut = 1; displaypara.nLeft = myoutput[i].m_display_para.nLeft; displaypara.nTop = myoutput[i].m_display_para.nTop; displaypara.nWidth = myoutput[i].m_display_para.nWidth; displaypara.nHeight = myoutput[i].m_display_para.nHeight; NET_DVR_ResetPara_Card(myoutput[i].m_iPlayhandle,&displaypara); } if(iNumber == 1) {//放大 displaypara.bToScreen = 1; displaypara.bToVideoOut = 1; displaypara.nLeft = myoutput[iPos].m_display_para.nLeft; displaypara.nTop = myoutput[iPos].m_display_para.nTop; displaypara.nWidth = myoutput[iPos].m_display_para.nWidth; displaypara.nHeight = myoutput[iPos].m_display_para.nHeight; NET_DVR_ResetPara_Card(myoutput[iPos].m_iPlayhandle,&displaypara); } else {//缩小 for(i = 0; i < iNumber; i++) { displaypara.bToScreen = 1; displaypara.bToVideoOut = 1; displaypara.nLeft = myoutput[i].m_display_para.nLeft; displaypara.nTop = myoutput[i].m_display_para.nTop; displaypara.nWidth = myoutput[i].m_display_para.nWidth; displaypara.nHeight = myoutput[i].m_display_para.nHeight; NET_DVR_ResetPara_Card(myoutput[i].m_iPlayhandle,&displaypara); } } } } void CNewclientDlg::MoveCurWin(int iWindowNum,int iCurWinPos) { //CNewclientDlg* mainwnd =(CNewclientDlg*) AfxGetMainWnd(); CRect rc; GetDlgItem(IDC_VEDIO_SHOW)->GetWindowRect(rc); WORD WIDTH = rc.Width(); WORD HEIGHT = rc.Height(); int rectWidth = 0; int rectHeight = 0; int rectTop = 0; int rectLeft = 0; switch(iWindowNum) { case 1: rectWidth = 706*W_RATIO; rectHeight = 578*H_RATIO; rectTop = WIDTH; rectLeft = HEIGHT; break; case 4: rectWidth = int( (float)WIDTH/2 ); rectHeight = int( (float)HEIGHT/2 ); switch(iCurWinPos) { case 0: case 1: rectTop = MYVIEW_TOP; rectLeft = MYVIEW_LEFT+iCurWinPos*rectWidth+iCurWinPos*1; break; case 2: case 3: rectTop = MYVIEW_TOP+rectHeight+2; rectLeft = MYVIEW_LEFT+(iCurWinPos-2)*rectWidth+(iCurWinPos-2)*1; break; default: break; } break; case 9: rectWidth = int( (float)WIDTH/3 ); rectHeight = int( (float)HEIGHT/3 ); switch(iCurWinPos) { case 0: case 1: case 2: rectTop = MYVIEW_TOP; rectLeft = MYVIEW_LEFT+iCurWinPos*rectWidth+iCurWinPos*1; break; case 3: case 4: case 5: rectTop = MYVIEW_TOP+rectHeight + 2; rectLeft = MYVIEW_LEFT+(iCurWinPos-3)*rectWidth+(iCurWinPos-3)*1; break; case 6: case 7: case 8: rectTop = MYVIEW_TOP+2*rectHeight+4; rectLeft = MYVIEW_LEFT+(iCurWinPos-6)*rectWidth+(iCurWinPos-6)*1; break; default: break; } break; case 16: rectWidth = int( (float)WIDTH/4 ); rectHeight = int( (float)HEIGHT/4 ); switch(iCurWinPos) { case 0: case 1: case 2: case 3: rectTop = MYVIEW_TOP; rectLeft = MYVIEW_LEFT+iCurWinPos*rectWidth+iCurWinPos*1; break; case 4: case 5: case 6: case 7: rectTop = MYVIEW_TOP+rectHeight+2; rectLeft = MYVIEW_LEFT+(iCurWinPos-4)*rectWidth+(iCurWinPos-4)*1; break; case 8: case 9: case 10: case 11: rectTop = MYVIEW_TOP+2*rectHeight+4; rectLeft = MYVIEW_LEFT+(iCurWinPos-8)*rectWidth+(iCurWinPos-8)*1; break; case 12: case 13: case 14: case 15: rectTop = MYVIEW_TOP+3*rectHeight+6; rectLeft = MYVIEW_LEFT+(iCurWinPos-12)*rectWidth+(iCurWinPos-12)*1; break; default: break; } break; case 33: rectWidth = int( (float)WIDTH/6 ); rectHeight = int( (float)HEIGHT/6 ); switch(iCurWinPos) { case 0: rectTop = MYVIEW_TOP; rectLeft = MYVIEW_LEFT+iCurWinPos*rectWidth+iCurWinPos*1; rectWidth = rectWidth*2; rectHeight = rectHeight*2+2; break; case 1: case 2: case 3: case 4: rectTop = MYVIEW_TOP; rectLeft = MYVIEW_LEFT+(iCurWinPos+1)*rectWidth+(iCurWinPos+1)*1; break; case 5: case 6: case 7: case 8: rectTop = MYVIEW_TOP+rectHeight+2; rectLeft = MYVIEW_LEFT+(iCurWinPos-3)*rectWidth+(iCurWinPos-3)*1; break; case 9: case 10: case 11: case 12: case 13: case 14: rectTop = MYVIEW_TOP+2*rectHeight+4; rectLeft = MYVIEW_LEFT+(iCurWinPos-9)*rectWidth+(iCurWinPos-9)*1; break; case 15: case 16: case 17: case 18: case 19: case 20: rectTop = MYVIEW_TOP+3*rectHeight+6; rectLeft = MYVIEW_LEFT+(iCurWinPos-15)*rectWidth+(iCurWinPos-15)*1; break; case 21: case 22: case 23: case 24: case 25: case 26: rectTop = MYVIEW_TOP+4*rectHeight+8; rectLeft = MYVIEW_LEFT+(iCurWinPos-21)*rectWidth+(iCurWinPos-21)*1; break; case 27: case 28: case 29: case 30: case 31: case 32: rectTop = MYVIEW_TOP+5*rectHeight+10; rectLeft = MYVIEW_LEFT+(iCurWinPos-27)*rectWidth+(iCurWinPos-27)*1; break; default: break; } break; case 64: rectWidth = int( (float)WIDTH/8 ); rectHeight = int( (float)HEIGHT/8 ); switch(iCurWinPos) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: rectTop = MYVIEW_TOP; rectLeft = MYVIEW_LEFT+iCurWinPos*rectWidth+iCurWinPos*1; break; case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: rectTop = MYVIEW_TOP+1*rectHeight+2; rectLeft = MYVIEW_LEFT+(iCurWinPos-8)*rectWidth+(iCurWinPos-8)*1; break; case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: rectTop = MYVIEW_TOP+2*rectHeight+4; rectLeft = MYVIEW_LEFT+(iCurWinPos-16)*rectWidth+(iCurWinPos-16)*1; break; case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31: rectTop = MYVIEW_TOP+3*rectHeight+6; rectLeft = MYVIEW_LEFT+(iCurWinPos-24)*rectWidth+(iCurWinPos-24)*1; break; case 32: case 33: case 34: case 35: case 36: case 37: case 38: case 39: rectTop = MYVIEW_TOP+4*rectHeight+8; rectLeft = MYVIEW_LEFT+(iCurWinPos-32)*rectWidth+(iCurWinPos-32)*1; break; case 40: case 41: case 42: case 43: case 44: case 45: case 46: case 47: rectTop = MYVIEW_TOP+5*rectHeight+10; rectLeft = MYVIEW_LEFT+(iCurWinPos-40)*rectWidth+(iCurWinPos-40)*1; break; case 48: case 49: case 50: case 51: case 52: case 53: case 54: case 55: rectTop = MYVIEW_TOP+6*rectHeight+12; rectLeft = MYVIEW_LEFT+(iCurWinPos-48)*rectWidth+(iCurWinPos-48)*1; break; case 56: case 57: case 58: case 59: case 60: case 61: case 62: case 63: rectTop = MYVIEW_TOP+7*rectHeight+14; rectLeft = MYVIEW_LEFT+(iCurWinPos-56)*rectWidth+(iCurWinPos-56)*1; break; default: break; } break; default: break; } mycurwin.m_black.ShowWindow(SW_HIDE); mycurwin.MoveWindow(rectLeft-1,rectTop-1,rectWidth+2,rectHeight+2); mycurwin.m_black.ShowWindow(SW_SHOW); mycurwin.EnableWindow(FALSE); } void CNewclientDlg::InitLed() { int i; m_pCapLed[0] = &m_CapLed1; m_pCapLed[1] = &m_CapLed2; m_pCapLed[2] = &m_CapLed3; m_pCapLed[3] = &m_CapLed4; m_pCapLed[4] = &m_CapLed5; m_pCapLed[5] = &m_CapLed6; m_pCapLed[6] = &m_CapLed7; m_pCapLed[7] = &m_CapLed8; m_pCapLed[8] = &m_CapLed9; m_pCapLed[9] = &m_CapLed10; m_pCapLed[10] = &m_CapLed11; m_pCapLed[11] = &m_CapLed12; m_pCapLed[12] = &m_CapLed13; m_pCapLed[13] = &m_CapLed14; m_pCapLed[14] = &m_CapLed15; m_pCapLed[15] = &m_CapLed16; //for(i = 0; i < MAXVIEWNUM; i++) { //m_pCapLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_DISABLED,CLed::LED_ROUND); } m_pAlarmLed[0] = &m_AlarmLed1; m_pAlarmLed[1] = &m_AlarmLed2; m_pAlarmLed[2] = &m_AlarmLed3; m_pAlarmLed[3] = &m_AlarmLed4; m_pAlarmLed[4] = &m_AlarmLed5; m_pAlarmLed[5] = &m_AlarmLed6; m_pAlarmLed[6] = &m_AlarmLed7; m_pAlarmLed[7] = &m_AlarmLed8; m_pAlarmLed[8] = &m_AlarmLed9; m_pAlarmLed[9] = &m_AlarmLed10; m_pAlarmLed[10] = &m_AlarmLed11; m_pAlarmLed[11] = &m_AlarmLed12; m_pAlarmLed[12] = &m_AlarmLed13; m_pAlarmLed[13] = &m_AlarmLed14; m_pAlarmLed[14] = &m_AlarmLed15; m_pAlarmLed[15] = &m_AlarmLed16; //for(i = 0; i < MAXVIEWNUM; i++) { //m_pAlarmLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_DISABLED,CLed::LED_ROUND); } } void CNewclientDlg::F_InitDecodeCard() { int nDispNum = 0; TRACE("初始化解码卡"); int iRet = NET_DVR_InitDDraw_Card(this->m_hWnd,0xff0000); iRet=NET_DVR_InitDevice_Card(&channelcount); TRACE("ChannelCount = %d", channelcount); if(channelcount <= 0) { MessageBox("请插入解码卡!", "温馨提示", MB_ICONINFORMATION); return; } else if(channelcount > 16) { channelcount = 16; } if(ClientParam.m_bNTSC) { nDispNum = GetDisplayChannelCount(); if (nDispNum >= 2) { REGION_PARAM param[MAX_DISPLAY_REGION]; int i; memset(param, 0, sizeof(param)); for (i=0; i= 2) { REGION_PARAM param[MAX_DISPLAY_REGION]; int i; memset(param, 0, sizeof(param)); for (i=0; iSetWindowText("停止对讲"); } } else { if(NET_DVR_StopVoiceCom(lVoiceIndex)) { GetDlgItem(IDC_AUDIOEXCHANGE)->SetWindowText("语音对讲"); lVoiceIndex = -1; } else { MessageBox("停止语音对讲失败!", "温馨提示", MB_ICONINFORMATION); } } } void CNewclientDlg::OnSystemcfg() { // TODO: Add your control notification handler code here CSystemConfig SysCfgDlg; SysCfgDlg.DoModal(); if(nUseCard == 1) { channelcount = 0; F_InitDecodeCard(); ArrayWindow(0,WINDOWNUM); MoveCurWin(WINDOWNUM,0); nUseCard = 0; } if(nUseCard == 2) { NET_DVR_ReleaseDevice_Card(); NET_DVR_ReleaseDDraw_Card(); nUseCard = 0; } if(ClientParam.m_bCheckServerTime) { if(checkservertimer == 0) { TRACE("启动硬盘录像机校时时钟,校时时间是每天的%06d", ClientParam.m_iCheckServerTime); checkservertimer = SetTimer(CHECKSERVER_TIMER, 1000, NULL); } } else { if(checkservertimer) { // TRACE("关闭硬盘录像机校时时钟"); KillTimer(CHECKSERVER_TIMER); checkservertimer = 0; } } F_JudgeDiskFull(); } void CNewclientDlg::OnSelchangeCombowndnum() { // TODO: Add your control notification handler code here int i; WORD wndnum; i = m_windownum.GetCurSel(); switch(i) { case 0: wndnum = 1; break; case 1: wndnum = 4; break; case 2: wndnum = 9; break; case 3: wndnum = 16; break; default: break; } if(WINDOWNUM != wndnum) { WINDOWNUM = wndnum; if(ClientParam.m_bCycling) { MessageBox("请停止循环播放!", "温馨提示", MB_ICONINFORMATION); return; } if(ClientParam.m_bPlaying) { TRACE("Stop Play"); F_StopPlay(); OnVideonetplay(); } ArrayWindow(0, WINDOWNUM); MoveCurWin(WINDOWNUM,0); } } void CNewclientDlg::F_StopPlay() { int i; if(cycletimer) { KillTimer(CYCLE_TIMER); cycletimer = 0; } if(!ClientParam.m_bUseCard) { if(!g_bShareSound) NET_DVR_CloseSound(); } for(i = 0; i < MAXVIEWNUM; i++) { if(myoutput[i].m_bFileSave) F_StopClientRecord(i); if(g_bShareSound) NET_DVR_CloseSoundShare(myoutput[i].m_iPlayhandle); myoutput[i].StopNet(); } GetDlgItem(IDC_PLAY)->SetWindowText("预览视频"); numberpos = 0; if( (ClientParam.m_bEnlarged) || (ClientParam.m_bFullScreen) ) { ArrayWindow(0, WINDOWNUM); MoveCurWin(WINDOWNUM,0); } ClientParam.m_bPlaying = FALSE; ClientParam.m_bCycling = FALSE; ClientParam.m_bPaused = FALSE; ClientParam.m_bNextPage = FALSE; ClientParam.m_bFrontPage = FALSE; //GetDlgItem(IDC_COMBOWNDNUM)->EnableWindow(TRUE); } void CNewclientDlg::OnVideonetplay() { // TODO: Add your control notification handler code here int itemp,i; UpdateData(TRUE); if(iSurveillanceNumber == 0) return; if(ClientParam.m_bPlaying) { TRACE("Stop Play"); F_StopPlay(); // m_windownum.EnableWindow(TRUE); return; } //GetDlgItem(IDC_COMBOWNDNUM)->EnableWindow(FALSE); ClientParam.m_bPlaying = TRUE; if(iSurveillanceNumber < WINDOWNUM) itemp = iSurveillanceNumber; else itemp = WINDOWNUM; for(i=0;i= 0)) { ClientParam.m_bPlaySound[i] = TRUE; } } Sleep(100); } if(iSurveillanceNumber <= WINDOWNUM) { numberpos = iSurveillanceNumber; } else { numberpos = WINDOWNUM; if(ClientParam.m_bCyclePlay) //循环播放 { if(cycletimer == 0) { cycletimer = SetTimer(CYCLE_TIMER,ClientParam.m_iCycleTime*1000,NULL); } ClientParam.m_bCycling = TRUE; m_bChangePage = TRUE; ClientParam.m_bPaused = FALSE; } else { ClientParam.m_bNextPage = TRUE; ClientParam.m_bFrontPage = FALSE; } } // m_windownum.EnableWindow(FALSE); GetDlgItem(IDC_PLAY)->SetWindowText("停止预览"); UpdateData(FALSE); SetAlarm(); } void CNewclientDlg::F_FullScreen() { GetWindowPlacement(&m_OldWndPlacement); CRect WindowRect, ClientRect, FullScreenRect; int FullWidth, FullHeight; GetWindowRect(&WindowRect); RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST, reposQuery, &ClientRect); ClientToScreen(&ClientRect); //获取屏幕的分辨率; FullWidth = GetSystemMetrics(SM_CXSCREEN); FullHeight = GetSystemMetrics(SM_CYSCREEN); //将除控制条外的客户区全屏显示到从(0,0)到(nFullWidth, nFullHeight)区域, 将(0,0)和(nFullWidth, nFullHeight)两个点外扩充原窗口和除控制条之外的 客户区位置间的差值, 就得到全屏显示的窗口位置; FullScreenRect.left = WindowRect.left-ClientRect.left; FullScreenRect.top = WindowRect.top-ClientRect.top; FullScreenRect.right = WindowRect.right-ClientRect.right+FullWidth; FullScreenRect.bottom = WindowRect.bottom-ClientRect.bottom+FullHeight; //进入全屏显示状态 ; WINDOWPLACEMENT wndpl; wndpl.length = sizeof(WINDOWPLACEMENT); wndpl.flags = 0; wndpl.showCmd = SW_SHOWNORMAL; wndpl.rcNormalPosition = FullScreenRect; SetWindowPlacement(&wndpl); int i; for(i = 0; i < WINDOWNUM; i++) myoutput[i].ShowWindow(SW_HIDE); F_ShowHide(FALSE); mycurwin.ShowWindow(SW_HIDE); i = iActiveWndNumber; if(ClientParam.m_bUseCard) { NET_DVR_DISPLAY_PARA displaypara; displaypara.bToVideoOut = 1; displaypara.bToScreen = 1; displaypara.nLeft = 0; displaypara.nTop = 0; displaypara.nWidth = 1024; displaypara.nHeight = 768; NET_DVR_ResetPara_Card(myoutput[i].m_iPlayhandle,&displaypara); } } void CNewclientDlg::F_EndFullScreen() { SetWindowPlacement(&m_OldWndPlacement); F_ShowHide(TRUE); mycurwin.ShowWindow(SW_SHOW); } void CNewclientDlg::F_ShowHide(BOOL bShow) { if(bShow) { //云台 GetDlgItem(IDC_BUTTONUP)->ShowWindow(SW_SHOW); GetDlgItem(IDC_BUTTONLEFT)->ShowWindow(SW_SHOW); GetDlgItem(IDC_BUTTONRIGHT)->ShowWindow(SW_SHOW); GetDlgItem(IDC_BUTTONDOWN)->ShowWindow(SW_SHOW); GetDlgItem(IDC_BUTTONTJLEFT)->ShowWindow(SW_SHOW); GetDlgItem(IDC_BUTTONTJRIGHT)->ShowWindow(SW_SHOW); GetDlgItem(IDC_BUTTONJJLEFT)->ShowWindow(SW_SHOW); GetDlgItem(IDC_BUTTONJJRIGHT)->ShowWindow(SW_SHOW); GetDlgItem(IDC_BUTTONGQLEFT)->ShowWindow(SW_SHOW); GetDlgItem(IDC_BUTTONGQRIGHT)->ShowWindow(SW_SHOW); GetDlgItem(IDC_YZD)->ShowWindow(SW_SHOW); GetDlgItem(IDC_BUTTONYZW)->ShowWindow(SW_SHOW); //预览 GetDlgItem(IDC_PLAY)->ShowWindow(SW_SHOW); //系统设置 GetDlgItem(IDC_SYSTEMCFG)->ShowWindow(SW_SHOW); //抓图 GetDlgItem(IDC_GETPICTURE)->ShowWindow(SW_SHOW); //录像 GetDlgItem(IDC_RECORD)->ShowWindow(SW_SHOW); //时间日志 GetDlgItem(IDC_EVENTLIST)->ShowWindow(SW_SHOW); ////布防,撤防 //GetDlgItem(IDC_BUTTONALARMSET)->ShowWindow(SW_SHOW); ////语音对讲 //GetDlgItem(IDC_AUDIOEXCHANGE)->ShowWindow(SW_SHOW); //回放 GetDlgItem(IDC_VIDEOFILEPLAY)->ShowWindow(SW_SHOW); ////亮度 //GetDlgItem(IDC_SLIDERLD)->ShowWindow(SW_SHOW); ////对比度 //GetDlgItem(IDC_SLIDERDBD)->ShowWindow(SW_SHOW); ////饱和度 //GetDlgItem(IDC_SLIDERBHD)->ShowWindow(SW_SHOW); ////色度 //GetDlgItem(IDC_SLIDERSD)->ShowWindow(SW_SHOW); ////音量 //GetDlgItem(IDC_SLIDERYL)->ShowWindow(SW_SHOW); ////恢复默认值 //GetDlgItem(IDC_BUTTONPOLL)->ShowWindow(SW_SHOW); ////退出系统 //GetDlgItem(IDC_EXIT)->ShowWindow(SW_SHOW); //窗口画面数 //GetDlgItem(IDC_COMBOWNDNUM)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_LED1)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_LED2)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_LED3)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_LED4)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_LED5)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_LED6)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_LED7)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_LED8)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_LED9)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_LED10)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_LED11)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_LED12)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_LED13)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_LED14)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_LED15)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_LED16)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_ALARMLED1)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_ALARMLED2)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_ALARMLED3)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_ALARMLED4)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_ALARMLED5)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_ALARMLED6)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_ALARMLED7)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_ALARMLED8)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_ALARMLED9)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_ALARMLED10)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_ALARMLED11)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_ALARMLED12)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_ALARMLED13)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_ALARMLED14)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_ALARMLED15)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_ALARMLED16)->ShowWindow(SW_SHOW); //2006-01-11 //GetDlgItem(IDC_STATIC0)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_STATIC1)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC2)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_STATIC3)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_STATIC4)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_STATIC5)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_STATIC6)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_STATIC7)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_STATIC8)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_STATIC9)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_STATIC10)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_STATIC11)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_STATIC12)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_STATIC13)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_STATIC14)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_STATIC15)->ShowWindow(SW_SHOW); //GetDlgItem(IDC_STATIC16)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC17)->ShowWindow(SW_SHOW); } else { //云台 GetDlgItem(IDC_BUTTONUP)->ShowWindow(SW_HIDE); GetDlgItem(IDC_BUTTONLEFT)->ShowWindow(SW_HIDE); GetDlgItem(IDC_BUTTONRIGHT)->ShowWindow(SW_HIDE); GetDlgItem(IDC_BUTTONDOWN)->ShowWindow(SW_HIDE); GetDlgItem(IDC_BUTTONTJLEFT)->ShowWindow(SW_HIDE); GetDlgItem(IDC_BUTTONTJRIGHT)->ShowWindow(SW_HIDE); GetDlgItem(IDC_BUTTONJJLEFT)->ShowWindow(SW_HIDE); GetDlgItem(IDC_BUTTONJJRIGHT)->ShowWindow(SW_HIDE); GetDlgItem(IDC_BUTTONGQLEFT)->ShowWindow(SW_HIDE); GetDlgItem(IDC_BUTTONGQRIGHT)->ShowWindow(SW_HIDE); GetDlgItem(IDC_YZD)->ShowWindow(SW_HIDE); GetDlgItem(IDC_BUTTONYZW)->ShowWindow(SW_HIDE); //预览 GetDlgItem(IDC_PLAY)->ShowWindow(SW_HIDE); //系统设置 GetDlgItem(IDC_SYSTEMCFG)->ShowWindow(SW_HIDE); //抓图 GetDlgItem(IDC_GETPICTURE)->ShowWindow(SW_HIDE); //录像 GetDlgItem(IDC_RECORD)->ShowWindow(SW_HIDE); //时间日志 GetDlgItem(IDC_EVENTLIST)->ShowWindow(SW_HIDE); //布防,撤防 GetDlgItem(IDC_BUTTONALARMSET)->ShowWindow(SW_HIDE); //语音对讲 GetDlgItem(IDC_AUDIOEXCHANGE)->ShowWindow(SW_HIDE); //回放 GetDlgItem(IDC_VIDEOFILEPLAY)->ShowWindow(SW_HIDE); //亮度 GetDlgItem(IDC_SLIDERLD)->ShowWindow(SW_HIDE); //对比度 GetDlgItem(IDC_SLIDERDBD)->ShowWindow(SW_HIDE); //饱和度 GetDlgItem(IDC_SLIDERBHD)->ShowWindow(SW_HIDE); //色度 GetDlgItem(IDC_SLIDERSD)->ShowWindow(SW_HIDE); //音量 GetDlgItem(IDC_SLIDERYL)->ShowWindow(SW_HIDE); //恢复默认值 GetDlgItem(IDC_BUTTONPOLL)->ShowWindow(SW_HIDE); //退出系统 GetDlgItem(IDC_EXIT)->ShowWindow(SW_HIDE); //窗口画面数 GetDlgItem(IDC_COMBOWNDNUM)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED1)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED2)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED3)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED4)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED5)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED6)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED7)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED8)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED9)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED10)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED11)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED12)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED13)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED14)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED15)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED16)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED1)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED2)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED3)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED4)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED5)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED6)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED7)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED8)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED9)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED10)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED11)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED12)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED13)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED14)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED15)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED16)->ShowWindow(SW_HIDE); //2006-01-11 GetDlgItem(IDC_STATIC0)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC1)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC2)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC3)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC4)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC5)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC6)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC7)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC8)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC9)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC10)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC11)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC12)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC13)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC14)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC15)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC16)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC17)->ShowWindow(SW_HIDE); } } void CNewclientDlg::F_ShowVideoParams() { m_ld.SetPos(ClientParam.m_VideoInfo[iActiveWndNumber].m_iBrightness); m_sd.SetPos(ClientParam.m_VideoInfo[iActiveWndNumber].m_iHue); m_bhd.SetPos(ClientParam.m_VideoInfo[iActiveWndNumber].m_iSaturation); m_dbd.SetPos(ClientParam.m_VideoInfo[iActiveWndNumber].m_iContrast); m_yl.SetPos(ClientParam.m_Volume); } void CNewclientDlg::F_NextPage() { int itemp,i; itemp = numberpos % WINDOWNUM; if ((itemp > 0) || (numberpos == iSurveillanceNumber))//只有当numberpos是WINDOWNUM的整数倍时才有可能按next return; for(i = 0; i < MAXVIEWNUM; i++) { if( (myoutput[i].m_iPlayhandle >= 0) || (myoutput[i].m_bFileSave) ) F_StopClientRecord(i); } if( (ClientParam.m_bEnlarged) || (ClientParam.m_bFullScreen) ) { ArrayWindow(0, WINDOWNUM); //窗口放大状态时,循环到下一画面,恢复原窗口数; MoveCurWin(WINDOWNUM,0); ClientParam.m_bEnlarged = FALSE; ClientParam.m_bFullScreen = FALSE; } itemp = iSurveillanceNumber - numberpos; if(itemp > WINDOWNUM) itemp = WINDOWNUM; if(!ClientParam.m_bUseCard) { if(!g_bShareSound) NET_DVR_CloseSound(); } for(i=0;i= 0)) { ClientParam.m_bPlaySound[i] = TRUE; } } Sleep(100); } } itemp = iSurveillanceNumber - numberpos; if(itemp <= WINDOWNUM) { numberpos = iSurveillanceNumber; ClientParam.m_bNextPage = FALSE; } else { numberpos += WINDOWNUM; } ClientParam.m_bFrontPage = TRUE; UpdateData(FALSE); } void CNewclientDlg::F_FrontPage() { int itemp,i; if(numberpos <= WINDOWNUM) return; for(i = 0; i < MAXVIEWNUM; i++) { if( (myoutput[i].m_iPlayhandle >= 0) || (myoutput[i].m_bFileSave) ) F_StopClientRecord(i); } if( (ClientParam.m_bEnlarged) || (ClientParam.m_bFullScreen) ) { ArrayWindow(0, WINDOWNUM); //窗口放大状态时,循环到下一画面,恢复原窗口数; MoveCurWin(WINDOWNUM,0); ClientParam.m_bEnlarged = FALSE; ClientParam.m_bFullScreen = FALSE; } if(numberpos > WINDOWNUM) { if(numberpos < 2*WINDOWNUM) { itemp = 0; } else { i = numberpos % WINDOWNUM; if (i == 0) itemp = numberpos - 2*WINDOWNUM ; else itemp = numberpos - WINDOWNUM -i; } if(!ClientParam.m_bUseCard) { if(!g_bShareSound) NET_DVR_CloseSound(); } //itemp:确定上一页要播放监控点的起始编号; for(i=0;i= 0)) { ClientParam.m_bPlaySound[i] = TRUE; } } Sleep(100); } } if (numberpos <= 2*WINDOWNUM) { numberpos = WINDOWNUM; ClientParam.m_bFrontPage = FALSE; //没有上一页 } else { i = numberpos % WINDOWNUM; if(i == 0) numberpos -= WINDOWNUM; else numberpos -= i; } } ClientParam.m_bNextPage = TRUE; UpdateData(FALSE); } void CNewclientDlg::F_CyclePause() { if(!ClientParam.m_bPaused) { ClientParam.m_bPaused = TRUE; if(cycletimer) { KillTimer(CYCLE_TIMER); cycletimer = 0; } } else { m_bChangePage = TRUE; F_CyclePlay(); if(cycletimer == 0) cycletimer = SetTimer(CYCLE_TIMER,ClientParam.m_iCycleTime*1000,NULL); ClientParam.m_bPaused = FALSE; } } void CNewclientDlg::F_CyclePlay() { int itemp,i,j; TRACE("F_CyclePlay"); if (iSurveillanceNumber <= WINDOWNUM) return; m_bChangePage = FALSE; if( (ClientParam.m_bEnlarged) || (ClientParam.m_bFullScreen) ) { if(ClientParam.m_bFullScreen) { F_EndFullScreen(); } ArrayWindow(0, WINDOWNUM); //窗口放大状态时,循环到下一画面,恢复原窗口数; MoveCurWin(WINDOWNUM,0); ClientParam.m_bEnlarged = FALSE; ClientParam.m_bFullScreen = FALSE; } if (iSurveillanceNumber == numberpos) //循环已到了最后一页,又开始第一页; itemp = WINDOWNUM; else { itemp = iSurveillanceNumber - numberpos; if (itemp > WINDOWNUM) itemp = WINDOWNUM; } if (iSurveillanceNumber == numberpos) j = 0; else j = numberpos; if(!ClientParam.m_bUseCard) { if(!g_bShareSound) NET_DVR_CloseSound(); } //如果一个循环结束,可能不是从9->9,或许是9->i,所以需要对对(9-i)做ClientStop //循环到最后一个画面,要播放的窗口数可能小于WINDOWNUM,所以在播放最后一个画面时,关闭多余的播放窗口; for(i=0;i= 0)) { ClientParam.m_bPlaySound[i] = TRUE; } } Sleep(100); // TRACE("cycle startplay %d", myoutput[i].m_iPlayhandle); } } // MyInvalidate(); itemp = iSurveillanceNumber - numberpos; if(itemp ==0) { numberpos = WINDOWNUM; } else if(itemp <= WINDOWNUM) { numberpos = iSurveillanceNumber; } else { numberpos += WINDOWNUM; } m_bChangePage = TRUE; UpdateData(FALSE); } void CNewclientDlg::OnGetpicture() { // TODO: Add your control notification handler code here RECT rc,rc2; GetClientRect(&rc); if (!getpic.IsExisted()) { getpic.Create(IDD_DLG_GETCAPTURE, NULL); //::GetClientRect(getpic.m_hWnd, &rc2); //::SetWindowPos(getpic.m_hWnd, wndTopMost, (rc.left+rc.right)/2, (rc.top+rc.bottom)/2, (rc.left+rc.right)/2+300, (rc.top+rc.bottom)/2+200, SWP_SHOWWINDOW); CRect rectFrame,rect; this->GetWindowRect( rectFrame ); rect.left = rectFrame.left+rectFrame.Width()/2-340/2; rect.top = rectFrame.top+rectFrame.Height()/2-180/2; rect.right = rect.left+340; rect.bottom = rect.top+180; getpic.MoveWindow( rect ); getpic.ShowWindow(SW_SHOW); } else { //::GetClientRect(getpic.m_hWnd, &rc2); //::SetWindowPos(getpic.m_hWnd, wndTopMost, (rc.left+rc.right)/2, (rc.top+rc.bottom)/2, (rc2.right-rc2.left)+8, (rc2.bottom-rc2.top)+24, SWP_SHOWWINDOW); CRect rectFrame,rect; this->GetWindowRect( rectFrame ); rect.left = rectFrame.left+rectFrame.Width()/2-340/2; rect.top = rectFrame.top+rectFrame.Height()/2-180/2; rect.right = rect.left+340; rect.bottom = rect.top+180; //getpic.MoveWindow( rect ); getpic.ShowWindow(SW_SHOW); } } void CNewclientDlg::OnRecord() { // TODO: Add your control notification handler code here int i = iActiveWndNumber; if(myoutput[i].m_bIsAutoSave || ClientParam.m_bCycling) return; if( (myoutput[i].m_iPlayhandle >= 0) && (!myoutput[i].m_bFileSave) ) { if(F_MakeDir()) { F_StartClientRecord(i); } } else if(myoutput[i].m_bFileSave) { F_StopClientRecord(i); } } BOOL CNewclientDlg::F_MakeDir() { CString sTemp; DWORD dirattr; CTime time; time = CTime::GetCurrentTime(); sTemp.Format("%c:\\mpeg4record\\", m_cCurrentRecordDriver); dirattr = GetFileAttributes(sTemp); if(dirattr == FILE_ATTRIBUTE_DIRECTORY) { sTemp.Format("%c:\\mpeg4record\\%4d-%02d-%02d\\", m_cCurrentRecordDriver, time.GetYear(), time.GetMonth(), time.GetDay()); dirattr=GetFileAttributes(sTemp); if(dirattr == FILE_ATTRIBUTE_DIRECTORY) { ClientParam.m_csClientRecordPath.Format("%s",sTemp); TRACE("已经创建了目录%s", sTemp); return TRUE; } else { if(!CreateDirectory(sTemp, NULL)) { MessageBox("创建年月日目录失败!", "温馨提示", MB_ICONINFORMATION); return FALSE; } else { ClientParam.m_csClientRecordPath.Format("%s",sTemp); TRACE("在已有的目录%c:\\mpeg4record下创建子目录%4d-%02d-%02d", m_cCurrentRecordDriver, time.GetYear(), time.GetMonth(), time.GetDay()); return TRUE; } } } if(!CreateDirectory(sTemp, NULL)) { TRACE("创建mpeg4record目录失败!"); return FALSE; } sTemp.Format("%c:\\mpeg4record\\%4d-%02d-%02d\\",m_cCurrentRecordDriver, time.GetYear(), time.GetMonth(), time.GetDay()); if(!CreateDirectory(sTemp, NULL)) { return FALSE; } ClientParam.m_csClientRecordPath.Format("%s",sTemp); TRACE("先创建%c:\\mpeg4record目录,再创建子目录%4d-%02d-%02d", m_cCurrentRecordDriver, time.GetYear(), time.GetMonth(), time.GetDay()); return TRUE; } void CNewclientDlg::F_StartClientRecord(int iRecordWndIndex) { int i; char cFilename[256]; i = iRecordWndIndex; TRACE("Start myoutput[%d] Client Record", i); CTime time = CTime::GetCurrentTime(); sprintf(cFilename, "%s%s_%02d_%4d%02d%02d_%02d%02d%02d.mp4", ClientParam.m_csClientRecordPath, myoutput[i].m_csIP, myoutput[i].m_iChannel, \ time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond() ); int nNum = 0; bool bRet = false; while( !bRet ) { bRet = NET_DVR_SaveRealData(myoutput[i].m_iPlayhandle, cFilename); Sleep( 1000 ); if( nNum++ >= 50 ) return; } TRACE("Client Record Filename = %s", cFilename); myoutput[i].m_lChangeFileNameTime = time.GetTime() + ClientParam.m_iRecordFileInterval * 60; myoutput[i].m_bFileSave = TRUE; //m_pCapLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_ON,CLed::LED_ROUND); g_RecordInfo[iRecordWndIndex].bCapture = true; } void CNewclientDlg::F_StopClientRecord(int iRecordWndIndex) { int i; i = iRecordWndIndex; TRACE("Stop myoutput[%d] Client Record", i); NET_DVR_StopSaveRealData(myoutput[i].m_iPlayhandle); myoutput[i].m_bFileSave = FALSE; //m_pCapLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_DISABLED,CLed::LED_ROUND); g_RecordInfo[iRecordWndIndex].bCapture = false; } /* void CNewclientDlg::OnHide() { // TODO: Add your control notification handler code here ShowWindow(SW_MINIMIZE); } */ void CNewclientDlg::OnEventlist() { // TODO: Add your control notification handler code here int i; CEventLog EventLogDlg; EventLogDlg.DoModal(); SetEvent(hVideoBeeper); for(i = 0; i < MAXVIEWNUM; i++) { if(ClientParam.m_iAlarmHandle[i] >= 0) { //m_pAlarmLed[i]->SetLed(CLed::LED_COLOR_GREEN,CLed::LED_ON,CLed::LED_ROUND); } //else //m_pAlarmLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_DISABLED,CLed::LED_ROUND); } for(i = 0; i < MAXALARMIN; i++) { alarminfo[i].m_csIP.Format(_T("")); alarminfo[i].m_csUsername.Format(_T("")); alarminfo[i].m_csPassword.Format(_T("")); alarminfo[i].m_iChannel = -1; alarminfo[i].m_iAlarmLevel = -1; alarminfo[i].m_iAlarmType = -1; alarminfo[i].m_iPortIndex = -1; alarminfo[i].m_wServerPort = 8000; } m_iAlarmNumber = 0; } void CNewclientDlg::OnButtonalarmset() { // TODO: Add your control notification handler code here int i; CSetAlarm SetAlarmDlg; SetAlarmDlg.DoModal(); if(SetAlarmDlg.m_bOK) { for(i = 0; i < MAXVIEWNUM; i++) { if(ClientParam.m_iAlarmHandle[i] >= 0) { //m_pAlarmLed[i]->SetLed(CLed::LED_COLOR_GREEN,CLed::LED_ON,CLed::LED_ROUND); } else { //m_pAlarmLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_DISABLED,CLed::LED_ROUND); } } } } void CNewclientDlg::OnVideofileplay() { // TODO: Add your control notification handler code here CPlayBack PlayBackDlg; PlayBackDlg.DoModal(); } BOOL CNewclientDlg::F_JudgeDiskFull() { int i; ULARGE_INTEGER FreeSpace,CallerSpace,TotalSpace; CString csRootPath; for(i = ClientParam.m_iStartRecordDriver; i < ClientParam.m_iEndRecordDriver + 1; i++) { csRootPath.Format("%c%s",m_cHardDriver[i],":\\"); //从录像起始驱动器开始 GetDiskFreeSpaceEx(csRootPath,&CallerSpace,&TotalSpace,&FreeSpace); if(CallerSpace.QuadPart > MINSPACE) { m_cCurrentRecordDriver = m_cHardDriver[i]; // TRACE("m_cCurrentRecordDriver = %c:\\", m_cCurrentRecordDriver); ClientParam.m_bAllDiskFull = FALSE; return TRUE; } } ClientParam.m_bAllDiskFull = TRUE; return FALSE; } void CNewclientDlg::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default //在此调用此函数重置时区,以修正时区调整之后由于程序只在初始化时获取时区而造成不能随之调整的问题 _tzset(); time_t lCurrentTime; CString csRootPath; CString csTemp; int i,j; CTime time1 = CTime::GetCurrentTime(); //-1与星期相对应 int iWeekday = time1.GetDayOfWeek() - 1; WORD iNowTime = time1.GetHour() * 100 + time1.GetMinute(); NET_DVR_TIME CurTime; CurTime.dwYear = time1.GetYear(); CurTime.dwMonth = time1.GetMonth(); CurTime.dwDay = time1.GetDay(); CurTime.dwHour = time1.GetHour(); CurTime.dwMinute = time1.GetMinute(); CurTime.dwSecond = time1.GetSecond(); HANDLE hSnap = NULL; switch(nIDEvent) { case CYCLE_TIMER: if(m_bChangePage) F_CyclePlay(); break; case FREESPACE_TIMER: csRootPath.Format("%c:\\", m_cCurrentRecordDriver); ULARGE_INTEGER FreeSpace,CallerSpace,TotalSpace; GetDiskFreeSpaceEx(csRootPath,&CallerSpace,&TotalSpace,&FreeSpace); ClientParam.m_bAllDiskFull = FALSE; if(CallerSpace.QuadPart < MINSPACE) { csTemp.Format("%4d-%02d-%02d %02d:%02d:%02d 硬盘驱动器%c已满", CurTime.dwYear, CurTime.dwMonth, CurTime.dwDay, CurTime.dwHour, CurTime.dwMinute, CurTime.dwSecond, m_cCurrentRecordDriver); TRACE(csTemp); if(!F_JudgeDiskFull()) //所有硬盘都满,删除8个最早的录像文件 { if(ClientParam.m_bCycleRecord) { F_DeleteClientRecordFile(); } else { for(i = 0; i < MAXVIEWNUM; i++) { if( (myoutput[i].m_iPlayhandle >= 0) && (myoutput[i].m_bFileSave) ) { F_StopClientRecord(i); } } MessageBox("客户端录像硬盘驱动器已满,无法继续录像!", "温馨提示", MB_ICONINFORMATION); return; } } else { //其他分区还有空间,存放到其他分区 if(F_MakeDir()) { TRACE("客户端录像文件存放到%c分区", m_cCurrentRecordDriver); for(i = 0; i < MAXVIEWNUM; i++) { if( (myoutput[i].m_iPlayhandle >= 0) && (myoutput[i].m_bFileSave) ) F_ChangeRecordFileName(i); } } } } break; case FILEINTERVAL_TIMER: ////////////////////// ////////////////////// for(i = 0; i < MAXVIEWNUM; i++) { if( (myoutput[i].m_iPlayhandle >= 0) && (myoutput[i].m_bFileSave) ) { lCurrentTime = time1.GetTime(); if(lCurrentTime - myoutput[i].m_lChangeFileNameTime >= 0) { TRACE("更改客户端录象文件名时间到"); if(F_MakeDir()) F_ChangeRecordFileName(i); } } } break; case AUTORECORD_TIMER: if(ClientParam.m_bCycling) return; //循环播放客户端不允许录像 if(!ClientParam.m_bAutoRecord) { for(j = 0; j < MAXVIEWNUM; j++) { if(myoutput[j].m_bIsAutoSave) { F_StopClientRecord(j); myoutput[j].m_bIsAutoSave = FALSE; } } } else { for(i = 0; i < 4; i++) { if( (iNowTime >= ClientParam.m_ClientRecordTime[iWeekday][i].m_iStartTime) && (iNowTime < ClientParam.m_ClientRecordTime[iWeekday][i].m_iStopTime) ) { for(j = 0; j < MAXVIEWNUM; j++) { if(myoutput[j].m_iPlayhandle >= 0) { //2008-02-25 既没有在自动录像又没有在手动录像才能开始自动录像 if(!myoutput[j].m_bIsAutoSave && !myoutput[j].m_bFileSave) { if(ClientParam.m_bAllDiskFull) { return; } if(F_MakeDir()) { F_StartClientRecord(j); myoutput[j].m_bIsAutoSave = TRUE; } } } } break; } } //2008-02-25 当前时间不在设定的范围内要将开始的自动录像停掉 if (i == 4) { for(j = 0; j < MAXVIEWNUM; j++) { if(myoutput[j].m_bIsAutoSave) { F_StopClientRecord(j); myoutput[j].m_bIsAutoSave = FALSE; } } } } break; case CHECKSERVER_TIMER: if(ClientParam.m_iCheckServerTime == (LONG)(CurTime.dwHour*10000 + CurTime.dwMinute*100 + CurTime.dwSecond) ) { for(i = 0; i < MAXIPNUMBER; i++) { if(serverinfo[i].m_csServerName != "") { if(NET_DVR_SetDVRConfig(serverinfo[i].m_lServerID, NET_DVR_SET_TIMECFG,0,&CurTime, sizeof(NET_DVR_TIME))) { TRACE("%4d年%02d月%02d日%02d时%02d分%02d秒进行硬盘录像机校时成功.", CurTime.dwYear, CurTime.dwMonth, CurTime.dwDay, CurTime.dwHour, CurTime.dwMinute, CurTime.dwSecond); } else { TRACE("%4d年%02d月%02d日%02d时%02d分%02d秒进行硬盘录像机校时失败.", CurTime.dwYear, CurTime.dwMonth, CurTime.dwDay, CurTime.dwHour, CurTime.dwMinute, CurTime.dwSecond); } } } } break; case 55: { DWORD dwTicks = GetTickCount(); for( int i=0;i g_NoMotionTime( g_nNoMotionTime ) ) { F_StopClientRecord(i); } //判断视频时间 nTime = ( dwTicks-g_RecordInfo[i].dwVideoStartTime)/1000; if( g_RecordInfo[i].bCapture && nTime > g_VideoMaxTime( g_nVideoMaxTime ) ) { F_StopClientRecord(i); } } } default: break; } CDialog::OnTimer(nIDEvent); } void CNewclientDlg::F_DeleteClientRecordFile() { CFileFind fdfile,fdfilemp4; BOOL bFinded,bfilefind; CString sDeleteDir,sTempDelete; CString sDir; CString sDate; CString sFileName; CTime time,temptime; int i,deletenum = 0; sDeleteDir.Format("0000-00-00"); sTempDelete.Format("3000-00-00"); time=CTime::GetCurrentTime(); for(i = ClientParam.m_iStartRecordDriver; i < (ClientParam.m_iEndRecordDriver + 1); i++) { sDir.Format("%c:\\mpeg4record\\*.*",m_cHardDriver[i]); bFinded=fdfile.FindFile(sDir); while (bFinded) { bFinded=fdfile.FindNextFile(); if (fdfile.IsDots()) { continue; } if (fdfile.IsDirectory()) { if(fdfile.GetFileName()==_T("download")) { continue; } if(fdfile.GetFileName()==_T("alarm")) { continue; } sFileName.Format("%c:\\mpeg4record\\%s\\*.mp4",m_cHardDriver[i],fdfile.GetFileName()); bfilefind=fdfilemp4.FindFile(sFileName); if (!bfilefind) { RemoveDirectory(fdfile.GetFilePath()); TRACE("删除目录:%s",fdfile.GetFilePath()); } while(bfilefind) { bfilefind=fdfilemp4.FindNextFile(); if (fdfile.IsDots()) { continue; } fdfilemp4.GetCreationTime(temptime); if(temptime= 0) || (myoutput[i].m_bFileSave) ) F_StopClientRecord(i); } MessageBox("硬盘容量不足,自动删除文件失败,请清理硬盘后重新开始录像!", "温馨提示", MB_ICONINFORMATION); } else { sTempDelete.Format("删除文件%s成功",sFileName); TRACE("删除文件%s",sFileName); deletenum++; } } void CNewclientDlg::F_ChangeRecordFileName(int iRecordWndIndex) { int i; char cFilename[256]; CTime time = CTime::GetCurrentTime(); i = iRecordWndIndex; if(myoutput[i].m_bFileSave) { TRACE("停止myoutput[%d]客户端录像,更换文件名", i); NET_DVR_StopSaveRealData(myoutput[i].m_iPlayhandle); } if(myoutput[i].m_iPlayhandle >= 0) { sprintf(cFilename, "%s%s_%02d_%4d%02d%02d_%02d%02d%02d.mp4", ClientParam.m_csClientRecordPath, myoutput[i].m_csIP, myoutput[i].m_iChannel, \ time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond() ); int nNum = 0; bool bRet = false; while( !bRet ) { bRet = NET_DVR_SaveRealData(myoutput[i].m_iPlayhandle, cFilename); Sleep( 1000 ); if( nNum++ >= 50 ) return; } myoutput[i].m_lChangeFileNameTime = time.GetTime() + ClientParam.m_iRecordFileInterval * 60; TRACE("Client Record Filename = %s", cFilename); myoutput[i].m_bFileSave = TRUE; //m_pCapLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_ON,CLed::LED_ROUND); } } void CNewclientDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: Add your message handler code here and/or call default int i; WORD wTemp; WORD wVolumevalue; BOOL bRet; i = iActiveWndNumber; wTemp = (0xFFFF) / 100; bRet = FALSE; if(myoutput[i].m_iPlayhandle >= 0) { if(GetDlgItem(IDC_SLIDERLD) == pScrollBar) { ClientParam.m_VideoInfo[i].m_iBrightness = /*10 - */m_ld.GetPos(); bRet = TRUE; } else if(GetDlgItem(IDC_SLIDERDBD) == pScrollBar) { ClientParam.m_VideoInfo[i].m_iContrast = /*10 - */m_dbd.GetPos(); bRet = TRUE; } else if(GetDlgItem(IDC_SLIDERBHD) == pScrollBar) { ClientParam.m_VideoInfo[i].m_iSaturation = /*10 - */m_bhd.GetPos(); bRet = TRUE; } else if(GetDlgItem(IDC_SLIDERSD) == pScrollBar) { ClientParam.m_VideoInfo[i].m_iHue= /*10 - */m_sd.GetPos(); bRet = TRUE; } if(bRet) { bRet = NET_DVR_ClientSetVideoEffect(myoutput[i].m_iPlayhandle, ClientParam.m_VideoInfo[i].m_iBrightness, ClientParam.m_VideoInfo[i].m_iContrast, ClientParam.m_VideoInfo[i].m_iSaturation, ClientParam.m_VideoInfo[i].m_iHue); if(!bRet) { MessageBox("设置视频参数失败!", "温馨提示", MB_ICONINFORMATION); } } } if(GetDlgItem(IDC_SLIDERYL) == pScrollBar) { if(lVoiceIndex >= 0) { TRACE("调整语音对讲声音."); ClientParam.m_Volume = m_yl.GetPos(); wVolumevalue = (WORD)(m_yl.GetPos()) * wTemp; NET_DVR_SetVoiceComClientVolume(lVoiceIndex, wVolumevalue); } else if(ClientParam.m_bPlaySound[i] && (myoutput[i].m_iPlayhandle >= 0)) { TRACE("调整音频浏览声音."); ClientParam.m_Volume = m_yl.GetPos(); wVolumevalue = (WORD)(m_yl.GetPos()) * wTemp; if(g_bShareSound) { NET_DVR_OpenSoundShare(myoutput[iActiveWndNumber].m_iPlayhandle); } else { NET_DVR_OpenSound(myoutput[i].m_iPlayhandle); } NET_DVR_Volume(myoutput[i].m_iPlayhandle, wVolumevalue); } } CDialog::OnHScroll(nSBCode, nPos, pScrollBar); } void CNewclientDlg::OnButtonpoll() { // TODO: Add your control notification handler code here int i = iActiveWndNumber; WORD wTemp = (0xFFFF) / 100; WORD wVolumevalue; ClientParam.m_VideoInfo[i].m_iBrightness = DEFAULTBRIGHTNESS; ClientParam.m_VideoInfo[i].m_iContrast = DEFAULTCONTRAST; ClientParam.m_VideoInfo[i].m_iSaturation = DEFAULTSATURATION; ClientParam.m_VideoInfo[i].m_iHue = DEFAULTHUE; NET_DVR_ClientSetVideoEffect(myoutput[i].m_iPlayhandle, ClientParam.m_VideoInfo[i].m_iBrightness, ClientParam.m_VideoInfo[i].m_iContrast, ClientParam.m_VideoInfo[i].m_iSaturation, ClientParam.m_VideoInfo[i].m_iHue); ClientParam.m_Volume = DEFAULTVOLUME; if(lVoiceIndex >= 0) { TRACE("调整语音对讲声音."); wVolumevalue = (WORD)(ClientParam.m_Volume) * 10 *wTemp; NET_DVR_SetVoiceComClientVolume(lVoiceIndex, wVolumevalue); } else if(ClientParam.m_bPlaySound) { TRACE("调整音频浏览声音."); wVolumevalue = (WORD)(ClientParam.m_Volume) * 10 * wTemp; if(g_bShareSound) { NET_DVR_OpenSoundShare(myoutput[iActiveWndNumber].m_iPlayhandle); } else { NET_DVR_OpenSound(myoutput[i].m_iPlayhandle); } NET_DVR_Volume(myoutput[i].m_iPlayhandle, wVolumevalue); } m_ld.SetPos(ClientParam.m_VideoInfo[iActiveWndNumber].m_iBrightness); m_sd.SetPos(ClientParam.m_VideoInfo[iActiveWndNumber].m_iHue); m_bhd.SetPos(ClientParam.m_VideoInfo[iActiveWndNumber].m_iSaturation); m_dbd.SetPos(ClientParam.m_VideoInfo[iActiveWndNumber].m_iContrast); m_yl.SetPos(ClientParam.m_Volume); } void CNewclientDlg::OnButtonyzw() { // TODO: Add your control notification handler code here UpdateData(TRUE); int i = iActiveWndNumber; if(myoutput[i].m_iPlayhandle >= 0) { NET_DVR_PTZPreset(myoutput[i].m_iPlayhandle, GOTO_PRESET, m_yzd); } } void CNewclientDlg::OnCancel() { // TODO: Add extra cleanup here // CDialog::OnCancel(); } /* void CNewclientDlg::OnButauto() { // TODO: Add your control notification handler code here char buf[20]; buf[0] = 0xa0; buf[1] = 0x00; buf[2] = 0x00; buf[3] = 0x07; buf[4] = 0x00; buf[5] = 0x63; buf[6] = 0xaf; buf[7] = 0x6b; NET_DVR_TransPTZ_Other(myoutput[0].m_lServerID, 1, buf, 8); } */ /*void CNewclientDlg::OnButsharesound() { // TODO: Add your control notification handler code here if(g_bShareSound) { NET_DVR_SetAudioMode(1); g_bShareSound = FALSE; // GetDlgItem(IDC_BUTSHARESOUND)->SetWindowText("sound"); } else { NET_DVR_SetAudioMode(2); g_bShareSound = TRUE; // GetDlgItem(IDC_BUTSHARESOUND)->SetWindowText("sharesound"); } } */ void CNewclientDlg::OnSelchangeCombonetdelay() { // TODO: Add your control notification handler code here UpdateData(TRUE); g_nNetDelay = m_NetDelayCtrl.GetCurSel(); } void CNewclientDlg::OnButton1() { // TODO: Add your control notification handler code here UpdateData(TRUE); int i = iActiveWndNumber; if(!NET_DVR_MakeKeyFrame(myoutput[i].m_lServerID, myoutput[i].m_iChannel)) { } } void CNewclientDlg::OnMove(int x, int y) { CDialog::OnMove(x, y); // TODO: Add your message handler code here Invalidate(TRUE); if (ClientParam.m_bUseCard) NET_DVR_RefreshSurface_Card(); UpdateWindow(); } void CNewclientDlg::OnButton2() { // TODO: Add your control notification handler code here UpdateData(TRUE); int i = iActiveWndNumber; if(!NET_DVR_MakeKeyFrameSub(myoutput[i].m_lServerID, myoutput[i].m_iChannel)) { } } void CNewclientDlg::OnCruise() { // TODO: Add your control notification handler code here if (myoutput[iActiveWndNumber].m_iPlayhandle < 0) { return; } CCruiseRoute CruiseRoute; CruiseRoute.m_lServerID = myoutput[iActiveWndNumber].m_lServerID; CruiseRoute.DoModal(); } void CNewclientDlg::OnBnClickedButtonup() { // TODO: 在此添加控件通知处理程序代码 } void CNewclientDlg::OnBnClickedButtondown() { // TODO: 在此添加控件通知处理程序代码 } HBRUSH CNewclientDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何属性 HBRUSH B = CreateSolidBrush(RGB( 255,255,255 )); if( nCtlColor == CTLCOLOR_STATIC ) { pDC->SetBkColor(RGB( 255,255,255 )); pDC->SetTextColor(RGB(0,0,0)); return B; } DeleteObject( B ); // TODO: 如果默认的不是所需画笔,则返回另一个画笔 return hbr; } BOOL CNewclientDlg::OnEraseBkgnd(CDC* pDC) { #if 0 CRect rc; this->GetClientRect(&rc); //ScreenToClient(&rc); pDC->StretchBlt(rc.left, rc.top, rc.Width(),rc.Height(),&m_dcMemBak, 0,0,m_bmInfoBak.bmWidth-1,m_bmInfoBak.bmHeight-1,SRCCOPY); #else CBrush brush; CRect rect, rect2; COLORREF rgbBackGnd = RGB( 255,255,255 ); //RGB( 59,61,63 ); GetWindowRect(&rect); ScreenToClient(&rect); brush.CreateSolidBrush(rgbBackGnd); pDC->FillRect(rect,&brush); //rect2.left = rect.left+775; //rect2.top = 0; //rect2.right = rect.right-5; //rect2.bottom = rect.top+735; //CPen pen; //pen.CreatePen(PS_SOLID,5,RGB(255,204,0)); //pDC->SelectObject(pen); //CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH)) ; //CBrush *pOldBrush=pDC->SelectObject(pBrush);//选入设备描述表 //pDC->Rectangle(rect2);//绘制矩形 //pDC->SelectObject(pOldBrush); //DeleteObject( pBrush ); DeleteObject( brush ); //DeleteObject( pen ); #endif return TRUE; //return CDialog::OnEraseBkgnd(pDC); } void CNewclientDlg::ShowGrid() { CClientDC dc(this); HICON hIcon; CRect rc1,rc2,rc3,rc4,rc5,rc6,rc7; GetDlgItem(IDC_STA_GRID1)->GetWindowRect( rc1 );ScreenToClient( &rc1 ); GetDlgItem(IDC_STA_GRID2)->GetWindowRect( rc2 );ScreenToClient( &rc2 ); GetDlgItem(IDC_STA_GRID3)->GetWindowRect( rc3 );ScreenToClient( &rc3 ); GetDlgItem(IDC_STA_GRID4)->GetWindowRect( rc4 );ScreenToClient( &rc4 ); GetDlgItem(IDC_STA_GRID5)->GetWindowRect( rc5 );ScreenToClient( &rc5 ); GetDlgItem(IDC_STA_GRID6)->GetWindowRect( rc6 );ScreenToClient( &rc6 ); GetDlgItem(IDC_STA_GRID7)->GetWindowRect( rc7 );ScreenToClient( &rc7 ); if( WINDOWNUM==1 ) { hIcon = AfxGetApp()->LoadIcon(IDI_GRID1_ON); dc.DrawIcon(rc1.left,rc1.top,hIcon); } else { hIcon = AfxGetApp()->LoadIcon(IDI_GRID1_OFF); dc.DrawIcon(rc1.left,rc1.top,hIcon); } if( WINDOWNUM==4 ) { hIcon = AfxGetApp()->LoadIcon(IDI_GRID4_ON); dc.DrawIcon(rc2.left,rc2.top,hIcon); } else { hIcon = AfxGetApp()->LoadIcon(IDI_GRID4_OFF); dc.DrawIcon(rc2.left,rc2.top,hIcon); } if( WINDOWNUM==9 ) { hIcon = AfxGetApp()->LoadIcon(IDI_GRID9_ON); dc.DrawIcon(rc3.left,rc3.top,hIcon); } else { hIcon = AfxGetApp()->LoadIcon(IDI_GRID9_OFF); dc.DrawIcon(rc3.left,rc3.top,hIcon); } if( WINDOWNUM==16 ) { hIcon = AfxGetApp()->LoadIcon(IDI_GRID16_ON); dc.DrawIcon(rc4.left,rc4.top,hIcon); } else { hIcon = AfxGetApp()->LoadIcon(IDI_GRID16_OFF); dc.DrawIcon(rc4.left,rc4.top,hIcon); } if( WINDOWNUM==33 ) { hIcon = AfxGetApp()->LoadIcon(IDI_GRID32_ON); dc.DrawIcon(rc5.left,rc5.top,hIcon); } else { hIcon = AfxGetApp()->LoadIcon(IDI_GRID32_OFF); dc.DrawIcon(rc5.left,rc5.top,hIcon); } if( WINDOWNUM==64 ) { hIcon = AfxGetApp()->LoadIcon(IDI_GRID64_ON); dc.DrawIcon(rc6.left,rc6.top,hIcon); } else { hIcon = AfxGetApp()->LoadIcon(IDI_GRID64_OFF); dc.DrawIcon(rc6.left,rc6.top,hIcon); } //if( WINDOWNUM==128 ) //{ // hIcon = AfxGetApp()->LoadIcon(IDI_GRID128_ON); // dc.DrawIcon(rc7.left,rc7.top,hIcon); //} //else //{ // hIcon = AfxGetApp()->LoadIcon(IDI_GRID128_OFF); // dc.DrawIcon(rc7.left,rc7.top,hIcon); //} } void CNewclientDlg::OnLButtonUp(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 WORD wndnum=0; CRect rc1,rc2,rc3,rc4,rc5,rc6,rc7; GetDlgItem(IDC_STA_GRID1)->GetWindowRect( rc1 );ScreenToClient( &rc1 ); GetDlgItem(IDC_STA_GRID2)->GetWindowRect( rc2 );ScreenToClient( &rc2 ); GetDlgItem(IDC_STA_GRID3)->GetWindowRect( rc3 );ScreenToClient( &rc3 ); GetDlgItem(IDC_STA_GRID4)->GetWindowRect( rc4 );ScreenToClient( &rc4 ); GetDlgItem(IDC_STA_GRID5)->GetWindowRect( rc5 );ScreenToClient( &rc5 ); GetDlgItem(IDC_STA_GRID6)->GetWindowRect( rc6 );ScreenToClient( &rc6 ); GetDlgItem(IDC_STA_GRID7)->GetWindowRect( rc7 );ScreenToClient( &rc7 ); bool bIn = false; if( rc1.PtInRect( point ) ) { wndnum = 1; bIn = true; } if( rc2.PtInRect( point ) ) { wndnum = 4; bIn = true; } if( rc3.PtInRect( point ) ) { wndnum = 9; bIn = true; } if( rc4.PtInRect( point ) ) { wndnum = 16; bIn = true; } if( rc5.PtInRect( point ) ) { wndnum = 33; bIn = true; } if( rc6.PtInRect( point ) ) { wndnum = 64; bIn = true; } //if( rc7.PtInRect( point ) ) //{ // wndnum = 128; bIn = true; //} if( bIn && WINDOWNUM != wndnum) { WINDOWNUM = wndnum; if(ClientParam.m_bCycling) { MessageBox("请停止循环播放!", "温馨提示", MB_ICONINFORMATION); return; } if(ClientParam.m_bPlaying) { TRACE("Stop Play"); F_StopPlay(); OnVideonetplay(); } ArrayWindow(0, WINDOWNUM); MoveCurWin(WINDOWNUM,0); ShowGrid(); } CDialog::OnLButtonUp(nFlags, point); }