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

📄 searchrecord.cpp

📁 它是一个可以实时交互的嵌入式软件系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	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 + -