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

📄 dlgdataview.cpp

📁 电子监控的网络编程实例
💻 CPP
📖 第 1 页 / 共 3 页
字号:

	CVideoCaptureView* pView=CVideoCaptureView::GetView();
	if(!pView) return;
	if(m_lRecordID>0)
		::SendMessage(pView->m_hWnd,WM_DATA_HAVE_CHANGE,m_lRecordID,0);

	/************************************************************************/
	/* 黑名单比对                                                           */
	/************************************************************************/

	int iWZLX;
	CString sWZLX;
	CString sHPHM;
	CString sBKHP;


	GetDlgItem(IDC_LICENSE2)->GetWindowText(sHPHM);
	
	if (sHPHM.GetLength()<1) 
		return;
	iWZLX=pView->Array_CompareInBKList(sHPHM,sBKHP);
	
	if (iWZLX>0) {
		PlaySound("alarm.wav",0 ,SND_FILENAME | SND_ASYNC );		
	}
	sWZLX=pView->Array_FindInBKYYList(iWZLX);
	GetDlgItem(IDC_EDIT_ALRM)->SetWindowText(sWZLX);
	

}



void CDlgDataView::OnLButtonDown(UINT nFlags, CPoint point) 
{	
	CRect rect,rect1;
	GetDlgItem(IDC_STATIC_SMALL)->GetWindowRect(&rect);
	ScreenToClient(&rect);
	rect.top+=10;
	long cx,cy;
	cx=rect.Width()/2-5;
	cy=rect.Height()/2-5;

	bigBMP=-1;

	for(int i=0;i<4;i++)
	{
		if(m_pDib[i] && !m_pDib[i]->IsNULL())
		{	
			switch(i) {
			case 0:			
				rect1=CRect(rect.left+5,rect.top+5,rect.left+5+cx,rect.top+5+cy);
				break;
			case 1:
				rect1=CRect(rect.left+5+cx+10,rect.top+5,rect.right-5,rect.top+5+cy);
				break;
			case 2:
				rect1=CRect(rect.left+5,rect.top+5+cy+10,rect.left+5+cx,rect.bottom-5);
				break;
			case 3:
				rect1=CRect(rect.left+5+cx+10,rect.top+5+cy+10,rect.right-5,rect.bottom-5);
				break;
			}			 
			if(rect1.PtInRect(point))
			{				
				//播放avi录像
				CString m_strFileExt=bmpFile[i].Right(3);
				m_strFileExt.MakeUpper();
				if(m_strFileExt=="AVI")
				{
					try
					{
						IsAVI=TRUE;
						bigBMP=i;
						Invalidate();
						m_avi.ShowWindow(SW_NORMAL);
						m_avi.SetFileName(bmpFile[i]);
						m_avi.SetHWndDisplay((long)m_hWnd);	
						m_avi.SetCommand("Open");
						m_avi.SetCommand("next");
						m_avi.SetCommand("Prev");
						m_avi.SetCommand("Play");						
					}
					catch(...)
					{						
						ShowMessage("打开AVI文件出错");
					}
				}
				else
				{
					m_avi.SetCommand("Close");
					m_avi.ShowWindow(SW_HIDE);
					IsAVI = FALSE;
					bigBMP=i;
					Invalidate();
				}
				
				break;
			}			
		}
		
	}
	CRect rect2;
	if (!IsAVI&& bigBMP>-1) {	
		CDC *pDc=GetDC();		
		pDc->StretchBlt(rect1.left-1,rect1.top-1,rect1.Width()+2,rect1.Height()+2,&RedFrameDC,0,0,4,3,SRCCOPY);
		ReleaseDC(pDc);
	}


	CDialog::OnLButtonDown(nFlags, point);
}

void CDlgDataView::OnDelete() 
{
	//删除当前的纪录
	if(pRstGlobal->IsOpen())
		pRstGlobal->Close();
	CString sql;
	sql.Format("delete * from record where XH=%d",m_lRecordID);
	pRstGlobal->ExecSql(sql);

	for(int i=0;i<8;i++)
	{
		if(bmpFile[i]!="")
		{
			try
			{			
				if (!DeleteFile(bmpFile[i]))
				{
					ShowMessage("删除["+bmpFile[i]+"]失败");
				}
			}
			catch (...)
			{
				ShowMessage("删除["+bmpFile[i]+"]文件出错");
			}
		}
	}

//	EndDialog(0);

	
	//删除主界面 列表框的选中 项
	CVideoCaptureView* pView=CVideoCaptureView::GetView();
	if(pView)
	{
		CListCtrl* pLC=(CListCtrl*)pView->GetDlgItem(IDC_LIST_DATA);

		if(pLC->GetItemCount()>1)
		{
			if (!RecordChange(1,FALSE))
				if(!RecordChange(2,FALSE))
					EndDialog(0);
		}
		else if(pLC->GetItemCount()==1)
		{
		//	CString str=pLC->GetItemText(0,0);
			CString str;
			if(pView->ZDJC)
				str=pLC->GetItemText(0,7);
			else
				str=pLC->GetItemText(0,0);
			thisNum=atol(str.GetBuffer(0));
		}
		

		for(int i=0;i<pLC->GetItemCount();i++)
		{
			long thisID=0;
			if(pView->ZDJC)
				thisID=atol(pLC->GetItemText(i,7));
			else
				thisID=atol(pLC->GetItemText(i,0));
			//	if(atol(pLC->GetItemText(i,5))==thisNum)//m_lRecordID)
			if(thisID==thisNum)
		//	{
		//	if(atol(pLC->GetItemText(i,0))==thisNum)//m_lRecordID)
			{
				pLC->DeleteItem(i);
				break;
			}
		}
		
		//当没有数据时关闭该窗口
		if(pLC->GetItemCount()<=0)
			EndDialog(0);
	
	}
	/*
		POSITION pos = pLC->GetFirstSelectedItemPosition();
			if (pos == NULL)
				TRACE0("No items were selected!\n");
			else
			{
				while (pos)
				{
					int nItem = pLC->GetNextSelectedItem(pos);
					if (nItem!=-1)
					{				
						if(atol(pLC->GetItemText(nItem,0))==m_lRecordID)
							pLC->DeleteItem(nItem);
					}
				}			
			}
	
	}*/
}

//改变当前纪录//并更新界面
BOOL CDlgDataView::OpenRecord(long id)
{

	//停止视频
	if(IsAVI)
	{
		m_avi.SetCommand("Stop");
		m_avi.ShowWindow(SW_HIDE);
		IsAVI=FALSE;
	}

	bigBMP=-1;
	//初始化DIB位图对象
	for(int i=0;i<12;i++)
	{
		if(m_pDib[i])
		{
			m_pDib[i]->DeleteObject();
			m_pDib[i]=NULL;
		}
	//	m_pDib[i]->m_hDIB=NULL;
	}
	CString sql;
	sql.Format("select * from record where XH=%ld",id);	
	CVideoCaptureView* pView=CVideoCaptureView::GetView();
	if(!pView) return FALSE;
	CADODataset* pRst1=new CADODataset();
	pRst1->SetConnection(pView->pConn);
	if(pRst1->Open(sql,CADODataset::openQuery))
	{
		if(pRst1->IsEof())
		{
			pRst1->Close();
			delete pRst1;
			return FALSE;
		}
		sql.Format("%ld",id);		
		GetDlgItem(IDC_RECORD_ID)->SetWindowText(sql);
		pRst1->GetFieldValue("WZSJ",sql);
		GetDlgItem(IDC_CAP_DATE)->SetWindowText(sql);
		pRst1->GetFieldValue("WZDD",sql);
		GetDlgItem(IDC_CAP_ADDRESS)->SetWindowText(sql);

		//获得车辆类型
		CString HPZL;
		CComboBox *pComb=(CComboBox *)GetDlgItem(IDC_COMBO1);
		pRst1->GetFieldValue("HPZL",HPZL);
		long nHPZL;
		int iSum=pComb->GetCount();
		nHPZL=atol(HPZL);
		
		for(int i=0;i<iSum;i++){
			if (nHPZL==pComb->GetItemData(i)) {
				pComb->SetCurSel(i);
				break;
			}
		}



		//获得打印标记
		pRst1->GetFieldValue("CLBJ",m_CLBJ);

		//获得自动稽查标记
		pRst1->GetFieldValue("ZDJC",sql);
		if (sql=="1")
			ZDJC=TRUE;
		else
			ZDJC=FALSE;

		pRst1->GetFieldValue("HPTP",sql);
		CFileFind hFind;
		BOOL bFind;
		bFind=hFind.FindFile(sql);
		hFind.Close();
		if (bFind) {
			HPTP=sql;
			m_pHaoPai=new CDIB(HPTP);
		}		
		else 
		{
			HPTP="";
			delete m_pHaoPai;
			m_pHaoPai=NULL;
		}

		
		pRst1->GetFieldValue("MBSD",sql);//目标速度
		GetDlgItem(IDC_TARGETSPEED)->SetWindowText(sql);		
		
		pRst1->GetFieldValue("XLSD",sql);//巡逻速度
		GetDlgItem(IDC_PATROLSPEED)->SetWindowText(sql);

		pRst1->GetFieldValue("CLLX",sql);
		GetDlgItem(IDC_CAR_TYPE)->SetWindowText(sql);
		pRst1->GetFieldValue("HPHM",sql);
		GetDlgItem(IDC_LICENSE2)->SetWindowText(sql);
		sHPHM=sql;
		
		pRst1->GetFieldValue("WZBH",sql);
		GetDlgItem(IDC_EDIT_ALARM)->SetWindowText(sql);
		

		pRst1->GetFieldValue("XZSD",sql);//限制速度
		GetDlgItem(IDC_LIMITED_SPEED)->SetWindowText(sql);

		int driveway;
		pRst1->GetFieldValue("XSFX",driveway);
		if (driveway==0) sql="同向";
		else if (driveway>0) sql="逆向";
		else sql="所有";
		GetDlgItem(IDC_DRIVE_WAY)->SetWindowText(sql);

		
		pRst1->GetFieldValue("bmp",sql);
		
		for (i=0;i<12;i++)
			bmpFile[i]="";
		for (i=0;i<12;i++)
		{
			
			int pos=sql.Find(",");
			if(pos!=-1)
			{
				bmpFile[i]=sql.Left(pos);
				sql=sql.Right(sql.GetLength()-pos-1);
			}
			else 
			{
				if(sql!="")
					bmpFile[i]=sql;
				break;
			}
		}

		try{
			YJTP=bmpFile[0];
		}catch (...) {
		}
		
		if(pView->m_bAutoTrans)
			GetDlgItem(IDC_BUTTON_SEND)->EnableWindow(FALSE);
		else 
			GetDlgItem(IDC_BUTTON_SEND)->EnableWindow(TRUE);

		long iPicNum=0;	
		
		for(i=0;i<12;i++)
		{
			if (bmpFile[i]!="")
			{
				CString m_strFileExt=bmpFile[i].Right(3);
				m_strFileExt.MakeUpper();
				if(m_strFileExt=="BMP" || m_strFileExt=="JPG")
				{				
					bFind=hFind.FindFile(bmpFile[i]);
					hFind.Close();
					if (bFind) {
						m_pDib[iPicNum]=new CDIB(bmpFile[i]);						
						iPicNum++;
					}				
				}
				else if(m_strFileExt=="AVI")
				{
					GetDlgItem(IDC_BUTTON_SEND)->EnableWindow(FALSE);
					CBitmap bmp1;
					if(bmp1.LoadBitmap(IDB_AVI))
					{						
						m_pDib[i]=new CDIB();
						m_pDib[i]->Create(bmp1);	
					}
					
					try
					{
						IsAVI=TRUE;
						bigBMP=i;
						Invalidate();
						m_avi.ShowWindow(SW_NORMAL);
						m_avi.SetFileName(bmpFile[i]);
						m_avi.SetHWndDisplay((long)m_hWnd);	
						m_avi.SetCommand("Open");
						m_avi.SetCommand("next");
						m_avi.SetCommand("Prev");
						m_avi.SetCommand("Play");
						//	GetDlgItem(IDC_BUTTON_PLAY)->SetWindowText("停止播放(&P)");//
						//ShellExecute(NULL,"OPEN",bmpFile[i],"","",SW_NORMAL);
					}
					catch(...)
					{						
						ShowMessage("打开AVI文件出错");
					}
					
				}
			}
		}
		//	CRect BigRect=CRect(0,0,640,480);
		for(i=0;i<iPicNum;i++)
			if(m_pDib[i] && !m_pDib[i]->IsNULL())
			{
				bigBMP=i;
				break;
			}
	}
	else
	{
		pRst1->Close();
		delete pRst1;
		pRst1=NULL;
		return FALSE;
	}
	pRst1->Close();
	delete pRst1;
	pRst1=NULL;
	thisNum=m_lRecordID;
	m_lRecordID=id;

	return TRUE;

}


//pos==0 首条记录 
//pos==1 前条记录 
//pos==2 后条记录 
//pos==3 末条记录 
BOOL CDlgDataView::RecordChange(int pos, BOOL IfShowBox/*=TRUE*/)//if true then ShowMsg else not ShowMsg
{
	//只能选择 当前的几条记录
	if(pRstGlobal->IsOpen())
		pRstGlobal->Close();
	
	//只能选择 当前的几条记录
	CVideoCaptureView* pView=CVideoCaptureView::GetView();
	if(!pView)
	return FALSE;
	int m_nCurrentItem=-1;
	CListCtrl* pLC=(CListCtrl*)pView->GetDlgItem(IDC_LIST_DATA);
	int maxCount=pLC->GetItemCount();
	long lll,ll;	
	for(long i=0;i<maxCount;i++){
		lll=atol(pLC->GetItemText(i,0)); 		
		if(lll==m_lRecordID){
			m_nCurrentItem=i;
			break;
		}
	}
	
	switch(pos) {
	case 0://pos==0 首条记录 
		m_nCurrentItem=maxCount-1;
		break;
	case 1://pos==1 前条记录 
		m_nCurrentItem++;
		break;
	case 2://pos==2 后条记录 
		m_nCurrentItem--;
		break;
	case 3://pos==3 末条记录	
		m_nCurrentItem=0;
	}
	
	if (m_nCurrentItem<0 || m_nCurrentItem>=maxCount ) {
		if(IfShowBox)
			ShowMessage2("已经到达纪录边界,不得再移动!");
			return TRUE;
	}
	else{
		ll=atol(pLC->GetItemText(m_nCurrentItem,0));
		
		if (OpenRecord(ll))
		{
			Invalidate();
		}else
			if(IfShowBox)
				ShowMessage2("该条纪录已经删除。");
			return true;

	}
		return TRUE;

}


void CDlgDataView::OnPre() 
{
	RecordChange(1);
}
void CDlgDataView::OnNext() 
{
	RecordChange(2);
}

void CDlgDataView::OnFirst() 
{
	RecordChange(0);
}

void CDlgDataView::OnLast() 
{
	RecordChange(3);	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -