?? remotelog.cpp
字號:
// RemoteLog.cpp : implementation file
//
#include "stdafx.h"
#include "newclient.h"
#include "RemoteLog.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern SERVER_INFO serverinfo[MAXIPNUMBER];
CRemoteLog * RFile;
/////////////////////////////////////////////////////////////////////////////
// CRemoteLog dialog
UINT GetLogFileThread(LPVOID pParam)
{
LONG bRet = -1;
NET_DVR_LOG strFileInfo;
CString tempstring;
while(1)
{
bRet = NET_DVR_FindNextLog(RFile->m_lLogFile, &strFileInfo);
if(bRet == NET_DVR_FILE_SUCCESS)
{
tempstring.Format("%04d-%02d-%02d %02d:%02d:%02d", strFileInfo.strLogTime.dwYear, strFileInfo.strLogTime.dwMonth, strFileInfo.strLogTime.dwDay, strFileInfo.strLogTime.dwHour,strFileInfo.strLogTime.dwMinute,strFileInfo.strLogTime.dwSecond);
RFile->m_list.InsertItem(RFile->m_lLogNum,tempstring,0);
if(strFileInfo.dwMajorType == 1)
{
tempstring.Format("%s","報警");
}
else if(strFileInfo.dwMajorType == 2)
{
tempstring.Format("%s","異常");
}
else if(strFileInfo.dwMajorType == 3)
{
tempstring.Format("%s","操作");
}
RFile->m_list.SetItemText(RFile->m_lLogNum,1,tempstring);
tempstring.Format("%d",strFileInfo.dwMinorType);
RFile->m_list.SetItemText(RFile->m_lLogNum,2,tempstring);
RFile->m_lLogNum++;
}
else
{
if(bRet == NET_DVR_ISFINDING)
{
Sleep(5);
continue;
}
if( (bRet == NET_DVR_NOMOREFILE) || (bRet == NET_DVR_FILE_NOFIND) )
{
RFile->GetDlgItem(IDC_BUTTONFIND)->SetWindowText("搜索日志"); // by zxy 2005/05/10
RFile->m_bSearch = FALSE;
AfxMessageBox("搜索日志結束!");
break;
}
else
{
RFile->GetDlgItem(IDC_BUTTONFIND)->SetWindowText("搜索日志");
RFile->m_bSearch = FALSE;
AfxMessageBox("由于服務器忙,或網絡故障,搜索日志異常終止!");
break;
}
}
}
CloseHandle(RFile->m_hFileThread);
RFile->m_hFileThread = NULL;
NET_DVR_FindLogClose(RFile->m_lLogFile);
return 0;
}
CRemoteLog::CRemoteLog(CWnd* pParent /*=NULL*/)
: CDialog(CRemoteLog::IDD, pParent)
{
//{{AFX_DATA_INIT(CRemoteLog)
m_ctDateStart = 0;
m_ctDateStop = 0;
m_ctTimeStart = 0;
m_ctTimeStop = 0;
//}}AFX_DATA_INIT
}
void CRemoteLog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CRemoteLog)
DDX_Control(pDX, IDC_LIST, m_list);
DDX_Control(pDX, IDC_COMBOSERVER, m_ServerCtrl);
DDX_Control(pDX, IDC_COMBOMODE, m_ModeCtrl);
DDX_Control(pDX, IDC_COMBOMINTYPE, m_MinTypeCtrl);
DDX_Control(pDX, IDC_COMBOMAJTYPE, m_MajTypeCtrl);
DDX_DateTimeCtrl(pDX, IDC_DATESTART, m_ctDateStart);
DDX_DateTimeCtrl(pDX, IDC_DATESTOP, m_ctDateStop);
DDX_DateTimeCtrl(pDX, IDC_TIMESTART, m_ctTimeStart);
DDX_DateTimeCtrl(pDX, IDC_TIMESTOP, m_ctTimeStop);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CRemoteLog, CDialog)
//{{AFX_MSG_MAP(CRemoteLog)
ON_BN_CLICKED(IDEXIT, OnExit)
ON_BN_CLICKED(IDC_BUTTONFIND, OnButtonfind)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CRemoteLog message handlers
BOOL CRemoteLog::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_bSearch = FALSE;
m_hFileThread = NULL;
m_ServerCtrl.AddString("請選擇DVR");
for(int i = 0; i < MAXIPNUMBER; i++)
{
if(serverinfo[i].m_csServerName != "")
m_ServerCtrl.AddString(serverinfo[i].m_csServerName);
}
RFile = this;
m_list.InsertColumn(0,"日志時間",LVCFMT_LEFT,180,-1);
m_list.InsertColumn(1,"主類型",LVCFMT_LEFT,80,-1);
m_list.InsertColumn(2,"次類型",LVCFMT_LEFT,150,-1);
m_list.InsertColumn(3,"事件",LVCFMT_LEFT,150,-1);
m_lLogNum = 0;
m_lLogFile = -1;
CTime time1 = CTime::GetCurrentTime();
CTime time(time1.GetYear(),time1.GetMonth(),time1.GetDay(),0,0,0);
CTime time0(time1.GetYear(),time1.GetMonth(),time1.GetDay(),23,59,59);
m_ctDateStart = time;
m_ctTimeStart = time;
m_ctDateStop = time1;
m_ctTimeStop = time0;
m_iServer = 0;
m_iMode = 0;
m_iMajType = 0;
m_iMinType = 0;
m_ServerCtrl.SetCurSel(m_iServer);
m_ModeCtrl.SetCurSel(m_iMode);
m_MajTypeCtrl.SetCurSel(m_iMajType);
m_MinTypeCtrl.SetCurSel(m_iMinType);
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CRemoteLog::OnCancel()
{
// TODO: Add extra cleanup here
// CDialog::OnCancel();
}
void CRemoteLog::OnOK()
{
// TODO: Add extra validation here
// CDialog::OnOK();
}
void CRemoteLog::OnExit()
{
// TODO: Add your control notification handler code here
if(m_hFileThread)
{
TerminateThread(m_hFileThread, 0);
CloseHandle(m_hFileThread);
m_hFileThread = NULL;
NET_DVR_FindLogClose(m_lLogFile);
}
CDialog::OnCancel();
}
void CRemoteLog::OnButtonfind()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
if(!m_bSearch)
{
NET_DVR_TIME StartTime;
NET_DVR_TIME StopTime;
m_iServer = m_ServerCtrl.GetCurSel()-1;
m_iMode = m_ModeCtrl.GetCurSel();
m_iMajType = m_MajTypeCtrl.GetCurSel();
m_iMinType = m_MinTypeCtrl.GetCurSel();
StartTime.dwYear = (WORD)m_ctDateStart.GetYear();
StartTime.dwMonth = (WORD)m_ctDateStart.GetMonth();
StartTime.dwDay = (WORD)m_ctDateStart.GetDay();
StartTime.dwHour = (char)m_ctTimeStart.GetHour();
StartTime.dwMinute = (char)m_ctTimeStart.GetMinute();
StartTime.dwSecond = (char)m_ctTimeStart.GetSecond();
StopTime.dwYear = (WORD)m_ctDateStop.GetYear();
StopTime.dwMonth = (WORD)m_ctDateStop.GetMonth();
StopTime.dwDay = (WORD)m_ctDateStop.GetDay();
StopTime.dwHour = (char)m_ctTimeStop.GetHour();
StopTime.dwMinute = (char)m_ctTimeStop.GetMinute();
StopTime.dwSecond = (char)m_ctTimeStop.GetSecond();
m_lLogFile = NET_DVR_FindDVRLog(serverinfo[m_iServer].m_lServerID, m_iMode, m_iMajType, m_iMinType, &StartTime, &StopTime);
if(m_lLogFile < 0)
{
AfxMessageBox("搜索日志失敗!");
CString sTemp;
sTemp.Format("ERROR: NET_DVR_FindDVRLog = %d",NET_DVR_GetLastError());
TRACE(sTemp);
return;
}
m_bSearch = TRUE;
DWORD dwThreadId;
if(m_hFileThread == NULL)
m_hFileThread = CreateThread(NULL,0,LPTHREAD_START_ROUTINE(GetLogFileThread),this,0,&dwThreadId);
if(m_hFileThread == NULL)
{
AfxMessageBox("打開線程失敗!");
return;
}
GetDlgItem(IDC_BUTTONFIND)->SetWindowText("停止搜索");
m_bSearch = TRUE;
}
else
{
NET_DVR_FindLogClose(m_lLogFile);
GetDlgItem(IDC_BUTTONFIND)->SetWindowText("搜索日志");
m_bSearch = FALSE;
if(m_hFileThread)
{
TerminateThread(m_hFileThread, 0);
CloseHandle(m_hFileThread);
m_hFileThread = NULL;
}
NET_DVR_FindLogClose(m_lLogFile);
GetDlgItem(IDC_BUTTONFIND)->SetWindowText("搜索日志");
m_bSearch = FALSE;
m_lLogNum = 0;
m_hFileThread = NULL;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -