📄 searchrecord.cpp
字号:
m_resultlist.InsertColumn(0, MSG_SCHRECORD_DVC_AND_CHL, LVCFMT_LEFT, 160, 0);
m_resultlist.InsertColumn(1, MSG_SCHRECORD_STARTTIME, LVCFMT_LEFT, 160, 1);
m_resultlist.InsertColumn(2, MSG_SCHRECORD_ENDTIME, LVCFMT_LEFT, 160, 2);
m_resultlist.InsertColumn(3, MSG_SCHRECORD_SIZE, LVCFMT_LEFT, 160, 3);
m_playfile = NULL;
UpdataResultList();
//初始化时间控件
CTime cur_time = CTime ::GetCurrentTime();
CTime timestart = CTime(cur_time.GetYear(),cur_time.GetMonth(), cur_time.GetDay(),
0,0,0);
CTime timeend = CTime(cur_time.GetYear(),cur_time.GetMonth(), cur_time.GetDay(),
23,59,59);
this->m_starttime=timestart;
this->m_starttime=timeend;
UpdateData(false);
return TRUE;
}
//主要用来处理进度条的问题,目前只支持一个文件的下载
void CALLBACK DownLoadPos(LONG lPlayHandle, DWORD dwTotalSize, DWORD dwDownLoadSize, DWORD dwUser)
{
CSearchRecord * dlg = (CSearchRecord *)dwUser;
dlg->UpdateDownloadPos(lPlayHandle, dwTotalSize, dwDownLoadSize);
}
//更新下载进度
void CSearchRecord::UpdateDownloadPos(LONG iHandle, DWORD dwTotal, DWORD dwDownload)
{
if(m_pdownloadfile != iHandle)
{
MessageBox(MSG_SCHRECORD_DOWNLORD_CB_ERR);
return;
}
m_downloadtotal = dwTotal;
m_downloadsize = dwDownload;
CString nstr;
nstr.Format("%d / %d",dwDownload, dwTotal);
GetDlgItem(IDC_EDIT1)->SetWindowText(nstr);
if(-1 == m_downloadsize || m_downloadsize >= m_downloadtotal)
{
MessageBox(MSG_SCHRECORD_DOWNLOAD_FIN);
if (m_pdownloadfile)
{
BOOL nRet = CLIENT_StopDownload(m_pdownloadfile);
if (!nRet)
{
((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
}
m_pdownloadfile = NULL;
}
((CButton *)GetDlgItem(IDC_SCH_DOWNLOAD))->SetWindowText(MSG_SCHRECORD_DOWNLOAD);
GetDlgItem(IDC_SCH_PLAYBACK)->EnableWindow(TRUE);
}
}
void CSearchRecord::OnSchDownload()
{
FileInfoNode *plistinfo;
if(m_pdownloadfile)
{
BOOL stopret = CLIENT_StopDownload(m_pdownloadfile);
if (!stopret)
{
((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
MessageBox(MSG_SCHRECORD_STOPDLFAILED);
}
else
{
MessageBox(MSG_SCHRECORD_CANCELED);
m_pdownloadfile = NULL;
GetDlgItem(IDC_SCH_PLAYBACK)->EnableWindow(TRUE);
((CButton *)GetDlgItem(IDC_SCH_DOWNLOAD))->SetWindowText(MSG_SCHRECORD_DOWNLOAD);
}
return;
}
if(m_resultlist.GetItemCount() == 0 || m_resultlist.GetSelectionMark() < 0)
{
MessageBox(MSG_SCHRECORD_DOWNLOADFILE_SEL, MSG_SCHRECORD_DOWNLOAD);
return;
}
plistinfo = (FileInfoNode *)m_resultlist.GetItemData(m_resultlist.GetSelectionMark());
//从resultlist中取得设备position,然后通过此值取得设备id
//更改为直接获取设备信息指针
LONG nDeviceId = plistinfo->pDevice->LoginID;
CFileDialog dlg(FALSE,"*.dav","download.dav",OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY,
"All File(*.dav)|*.*||",this);
if(dlg.DoModal() != IDOK)
{
return;
}
CString strName = dlg.GetPathName();
m_pdownloadfile = CLIENT_DownloadByRecordFile(nDeviceId, &plistinfo->fileinfo,
strName.GetBuffer(0),DownLoadPos, (DWORD)this);
if(m_pdownloadfile)
{
((CButton *)GetDlgItem(IDC_SCH_DOWNLOAD))->SetWindowText(MSG_SCHRECORD_CANCELDOWNLOAD);
GetDlgItem(IDC_SCH_PLAYBACK)->EnableWindow(FALSE);
SetTimer((UINT)this, 1000,NULL);
}
else
{
((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
GetDlgItem(IDC_SCH_PLAYBACK)->EnableWindow(TRUE);
MessageBox(MSG_SCHRECORD_STARTDLFAILED);
}
}
void CSearchRecord::OnClose()
{
if(m_pdownloadfile)
{
BOOL nRet = CLIENT_StopDownload(m_pdownloadfile);
if (!nRet)
{
((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
}
m_pdownloadfile = NULL;
}
KillTimer((int)this);
CDialog::OnClose();
}
void CSearchRecord::OnPlayback()
{
if(m_resultlist.GetItemCount() == 0 || m_resultlist.GetSelectionMark() < 0)
{
//MessageBox(MSG_SCHRECORD_PLAYFILE_SEL, MSG_SCHRECORD_PLAY);
return;
}
m_playfile = (FileInfoNode *)m_resultlist.GetItemData(m_resultlist.GetSelectionMark());
CDialog::OnOK();
}
void CSearchRecord::OnSchClearList()
{
POSITION nPos;
FileInfoNode *pInfo;
nPos = g_ptrfilelist->GetHeadPosition();
for(int i = 0; i < g_ptrfilelist->GetCount(); i ++ )
{
pInfo = (FileInfoNode *)g_ptrfilelist->GetNext(nPos);
delete pInfo;
}
g_ptrfilelist->RemoveAll();
m_resultlist.DeleteAllItems();
}
void CSearchRecord::UpdataResultList()
{
CString nStr;
CString strST;
CString strET;
CTime stime, etime;
FileInfoNode *pInfo ;
m_resultlist.DeleteAllItems();
POSITION nPos = g_ptrfilelist->GetHeadPosition();
for(int i = 0; i < g_ptrfilelist->GetCount(); i++)
{
pInfo = (FileInfoNode *)g_ptrfilelist->GetNext(nPos);
strST = g_TimeOutString(&pInfo->fileinfo.starttime );
strET = g_TimeOutString(&pInfo->fileinfo.endtime );
m_resultlist.InsertItem(i, pInfo->fileinfo.filename);
m_resultlist.SetItemText(i, 1, strST);
m_resultlist.SetItemText(i, 2, strET);
nStr.Format("%d",pInfo->fileinfo.size);
m_resultlist.SetItemText(i, 3, nStr.GetBuffer(0));
m_resultlist.SetItemData(i, (DWORD)pInfo);
}
}
void CSearchRecord::OnTimer(UINT nIDEvent)
{
if(m_pdownloadfile)
{
m_download_pos.SetPos(m_downloadsize * 100/m_downloadtotal);
}
CDialog::OnTimer(nIDEvent);
}
void CSearchRecord::OnDblclkSchResultlist(NMHDR* pNMHDR, LRESULT* pResult)
{
OnPlayback();
*pResult = 0;
}
void CSearchRecord::SetDevice(DeviceNode *nDev)
{
m_Device = nDev;
}
void CSearchRecord::SetChannelNo(int channelNo)
{
this->m_channelNo=channelNo;
}
void CSearchRecord::OnButtonTest()
{
// TODO: Add your control notification handler code here
}
void CSearchRecord::OnButtonLast()
{
// TODO: Add your control notification handler code here
}
void CSearchRecord::OnBtnRight()
{
// TODO: Add your control notification handler code here
}
void CSearchRecord::OnBtnDown()
{
// TODO: Add your control notification handler code here
m_resultlist.SetFocus();
int nItem = m_resultlist.GetNextItem (-1, LVNI_SELECTED);
int count = m_resultlist.GetItemCount();
if(count==0)
return;
if(nItem<0)
m_resultlist.SetItemState(0,TVIS_SELECTED|LVIS_FOCUSED,TVIS_SELECTED|LVIS_FOCUSED);
else if(nItem==count-1)
{
m_resultlist.SetItemState(nItem,0,TVIS_SELECTED|LVIS_FOCUSED);
m_resultlist.SetItemState(0,TVIS_SELECTED|LVIS_FOCUSED,TVIS_SELECTED|LVIS_FOCUSED);
}
else
{
//取消选中
m_resultlist.SetItemState(nItem,0,TVIS_SELECTED|LVIS_FOCUSED);
//设置选中
m_resultlist.SetItemState(nItem+1,LVNI_SELECTED|LVIS_FOCUSED,LVNI_SELECTED|LVIS_FOCUSED);
}
}
void CSearchRecord::OnButtonLeft()
{
// TODO: Add your control notification handler code here
CString str;
for(int i=1;i<10;i++)
{
str.Format("File%d",i);
m_resultlist.InsertItem(i,str);
}
//UpdateData();
//this->OnSchStartsearch();
}
void CSearchRecord::OnCloseTheWindow()
{
CDialog::OnCancel();
}
void CSearchRecord::Left()
{
AfxMessageBox("OK");
}
void CSearchRecord::OnButtonUp()
{
// TODO: Add your control notification handler code here
m_resultlist.SetFocus();
//获得选中
int nItem = m_resultlist.GetNextItem (-1, LVNI_SELECTED);
int count = m_resultlist.GetItemCount();
if(count==0)
return;
if(nItem<0)
m_resultlist.SetItemState(count-1,TVIS_SELECTED|LVIS_FOCUSED,TVIS_SELECTED|LVIS_FOCUSED);
else if(nItem==0)
{
//取消选中
m_resultlist.SetItemState(nItem,0,TVIS_SELECTED|LVIS_FOCUSED);
m_resultlist.SetItemState(count-1,TVIS_SELECTED|LVIS_FOCUSED,TVIS_SELECTED|LVIS_FOCUSED);
}
else
{
//取消选中
m_resultlist.SetItemState(nItem,0,TVIS_SELECTED|LVIS_FOCUSED);
//设置选中
m_resultlist.SetItemState(nItem-1,LVNI_SELECTED|LVIS_FOCUSED,LVNI_SELECTED|LVIS_FOCUSED);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -