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

📄 dlgbkm.cpp

📁 电子监控的网络编程实例
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// DlgBkM.cpp : implementation file
//

#include "stdafx.h"
#include "videocapture.h"
#include "DlgBkM.h"
#include "VideocaptureView.h"


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgBkM dialog
#define  MAXRECORD  1000

CDlgBkM::CDlgBkM(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgBkM::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgBkM)
	m_strHPBH = _T("");
	m_strHPZL = _T("");
	m_strHPYS = _T("");
	m_strBKDW = _T("");
	m_tmBKSJ = COleDateTime::GetCurrentTime();
	m_strBKYY = _T("");
	//}}AFX_DATA_INIT
}


void CDlgBkM::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgBkM)
	DDX_Control(pDX, IDC_LIST1, m_list);
	DDX_Control(pDX, IDC_COMBO_BKYY, m_ctlBKYY);
	DDX_Control(pDX, IDC_DP_BKSJ, m_ctlBKSJ);
	DDX_Control(pDX, IDC_COMBO_HPYS, m_ctlHPYS);
	DDX_Control(pDX, IDC_COMBO_BKDW, m_ctlBKDW);
	DDX_Control(pDX, IDC_COMBO_HPZL, m_ctlHPZL);
	DDX_Text(pDX, IDC_EDIT_HPBH, m_strHPBH);
	DDV_MaxChars(pDX, m_strHPBH, 15);
	DDX_CBString(pDX, IDC_COMBO_HPZL, m_strHPZL);
	DDX_CBString(pDX, IDC_COMBO_HPYS, m_strHPYS);
	DDX_CBString(pDX, IDC_COMBO_BKDW, m_strBKDW);
	DDX_DateTimeCtrl(pDX, IDC_DP_BKSJ, m_tmBKSJ);
	DDX_CBString(pDX, IDC_COMBO_BKYY, m_strBKYY);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgBkM, CDialog)
	//{{AFX_MSG_MAP(CDlgBkM)
	ON_BN_CLICKED(IDC_EDIT_BK, OnEditBk)
	ON_BN_CLICKED(IDC_DEL_BK, OnDelBk)
	ON_BN_CLICKED(IDC_ADD_BK, OnAddBk)
	ON_BN_CLICKED(IDC_DEAL_BK, OnDealBk)
	ON_NOTIFY(HDN_ITEMCLICK, IDC_LIST1, OnItemclickList1)
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, OnItemchangedList1)
	ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)
	ON_BN_CLICKED(IDC_BTN_OPEN, OnBtnOpen)
	ON_BN_CLICKED(IDC_Btn_Next, OnBtnNext)
	ON_BN_CLICKED(IDC_BUTTON_FIRST, OnButtonFirst)
	ON_BN_CLICKED(IDC_BUTTON_LAST, OnButtonLast)
	ON_BN_CLICKED(IDC_BUTTON_OK, OnButtonOk)
	ON_BN_CLICKED(IDC_BUTTON_P1, OnButtonP1)
	ON_BN_CLICKED(IDC_BUTTON_N1, OnButtonN1)
	ON_BN_CLICKED(IDC_BUTTON_F1, OnButtonF1)
	ON_BN_CLICKED(IDC_BUTTON_L1, OnButtonL1)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgBkM message handlers

BOOL CDlgBkM::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	CVideoCaptureView* pView=CVideoCaptureView::GetView();
	if(!pView)
		return FALSE;
	try{
		pRst=new CADODataset();
		pRst->SetConnection(pView->pConn);
	}catch (...) {
		AfxMessageBox("数据库访问不成功,请尝试关闭本窗口,再打开。");
		EndDialog(0);
	}

	m_ctlHPYS.SetCurSel(0);
	
	
	((CDateTimeCtrl *)GetDlgItem(IDC_DP_BKSJ))->SetFormat("yyyy-MM-dd HH:mm:ss");
		
	CString str;
	CString tmp;
	CString deStr="";	
	try	{
		str="select * from HPZL order by HPZL desc";
		pRst->Open(str,CADODataset::openQuery);
		while(!pRst->IsEof())
		{
			pRst->GetFieldValue("HPZL",str);			
			pRst->GetFieldValue("ZLMS",tmp);
			m_ctlHPZL.AddString(str+"-"+tmp);
			if (deStr=="") {
				deStr=str+"-"+tmp;
			}			
			pRst->MoveNext();			
		}
		if (m_ctlHPZL.GetCount()>0) {
			m_ctlHPZL.SetCurSel(0);
		}
		
		
	}
	catch (...)
	{
		WriteLog("布控设置--加载号牌种类出错");
		ShowMessage("加载号牌种类出错",MB_OK | MB_ICONERROR);
	}
	if (pRst->IsOpen()) {
		pRst->Close();
	}
	try{
		long iIndex;
		long iBKYY;
		m_ctlBKYY.Clear();
		str="select bkid,bkms from bkyy order by bkid asc";
		pRst->Open(str,CADODataset::openQuery);
		while (!pRst->IsEof()) {
			pRst->GetFieldValue("bkid",iBKYY);
			pRst->GetFieldValue("bkms",str);
			iIndex=m_ctlBKYY.AddString(str);
			m_ctlBKYY.SetItemData(iIndex,iBKYY);
			pRst->MoveNext();
		}		
		if (m_ctlBKYY.GetCount()>0) {
			m_ctlBKYY.SetCurSel(0);
		}
		pRst->Close();
		
	}catch (...) {
	}
	
	if (pRst->IsOpen()) {
		pRst->Close();
	}
	
	try
	{
		deStr="";
		CStdioFile* pTxtFile = new CStdioFile();
		if(!pTxtFile->Open(".\\Police.dat",CFile::modeRead | CFile::typeText))
		{
			ShowMessage("Police.dat文件不存在\n系统将新建该文件!",MB_OK|MB_ICONEXCLAMATION);
			
			pTxtFile->Open(".\\Police.dat",CFile::modeWrite | CFile::modeCreate);
			pTxtFile->WriteString("无锡交巡警支队");
			m_ctlBKDW.InsertString(0,"无锡交巡警支队");
			m_ctlBKDW.SelectString(0,"无锡交巡警支队");
		}
		
		while(pTxtFile->GetPosition()<pTxtFile->GetLength())
		{
			pTxtFile->ReadString(str);
			m_ctlBKDW.InsertString(0,str);
			if (deStr=="") {
				deStr=str;
			}	
		}
		pTxtFile->Close();
		delete pTxtFile;
		
		m_ctlBKDW.SetCurSel(0);
	}
	catch (...) {
		WriteLog("读写文件Police.dat失败");
		ShowMessage("读写文件Police.dat失败",MB_OK|MB_ICONERROR);
		return FALSE;
	}

	if (pRst->IsOpen()) {
		pRst->Close();
	}

	CString sValue1;
	sValue1.Format("前%d条",MAXRECORD);
	GetDlgItem(IDC_BTN_OPEN)->SetWindowText(sValue1);
	sValue1.Format("后%d条",MAXRECORD);
	GetDlgItem(IDC_Btn_Next)->SetWindowText(sValue1);
	
	m_list.SetExtendedStyle( LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT );
	m_list.InsertColumn(0,"嫌疑号牌",LVCFMT_LEFT,100);
	m_list.InsertColumn(1,"号牌颜色",LVCFMT_LEFT,60);
	m_list.InsertColumn(2,"号牌种类",LVCFMT_LEFT,60);
	m_list.InsertColumn(3,"布控原因",LVCFMT_LEFT,200);
	m_list.InsertColumn(4,"布控时间",LVCFMT_LEFT,140);
	m_list.InsertColumn(5,"布控单位",LVCFMT_LEFT,100);
	m_list.InsertColumn(6,"处理标志",LVCFMT_LEFT,60);
	m_list.InsertColumn(7,"处理时间",LVCFMT_LEFT,0);

	
		
	CString sSQL=CString("SELECT hphm, hpys, hpzl.hpzl+'-'+hpzl.zlms AS hpzl, bkyy, bksj, bkdw, deal, clrq ") +
				 CString("FROM wzbk LEFT JOIN hpzl ON wzbk.hpzl=hpzl.hpzl ") +
				 CString("ORDER BY BKSJ DESC");
	DWORD i=0;	
	try{	
		pRst->Open(sSQL,CADODataset::openQuery);
		while (!pRst->IsEof()) {
			i++;
			if (i>=MAXRECORD) {
				break;
			}
			pRst->GetFieldValue("HPHM",sSQL);
			n_item=m_list.InsertItem(0,sSQL);
			int HPYS=0;
			pRst->GetFieldValue("HPYS",HPYS);
			if (HPYS==0) {
				sSQL="蓝色";
			}else if (HPYS==1) {
				sSQL="黄色";
			}else if(HPYS==2){
				sSQL="白色";
			}else{
				sSQL="黑色";
			}
			m_list.SetItemText(n_item,1,sSQL);
			pRst->GetFieldValue("HPZL",sSQL);
			m_list.SetItemText(n_item, 2, sSQL);
			pRst->GetFieldValue("BKYY",sSQL);
			m_list.SetItemText(n_item, 3, sSQL);			
			pRst->GetFieldValue("BKSJ",sSQL);
			m_list.SetItemText(n_item, 4, sSQL);			
			pRst->GetFieldValue("BKDW",sSQL);
			m_list.SetItemText(n_item, 5, sSQL);			
			
			pRst->GetFieldValue("DEAL",sSQL);
			if (sSQL=="0") {
				m_list.SetItemText(n_item,6,"未处理");
			}else
			{
				m_list.SetItemText(n_item,6,"已处理");
			}
			
			pRst->GetFieldValue("CLRQ",sSQL);
			
			m_list.SetItemText(n_item,7,sSQL);

			pRst->MoveNext();
			
		}
		n_item=m_list.GetItemCount()-1;
		if (m_list.GetItemCount()>0) {
			SetAddWindow(0);
			m_list.EnsureVisible(m_list.GetItemCount()-1,true);
			m_list.SetHotItem(m_list.GetItemCount()-1);
		}
		
		
	}catch (...) {
		AfxMessageBox("黑名单控制模块打开失败,请尝试关闭本窗口,再打开。");
	}
	
	
	/*
	m_nCurrXH=-1;

	//从黑名单列表中导入黑名单
	try{
		BK strBK;
		CString bkYY;
		BOOL bNext=false;
		DWORD nSum=pView->bkArray.GetSize();
		for(int i=0;i<500;i++){
			if (i<nSum) {
				strBK=pView->bkArray.GetAt(i);
				int p=m_list.InsertItem(i,strBK.sHPHM);
				bkYY=pView->Array_FindInBKYYList(strBK.nBKYY);
				m_list.SetItemText(p,3,bkYY);				
				bNext=true;
			}else
			{
				m_nCurrXH=0;
				bNext=false;
				break;
			}	
		}
		
		if (bNext) {
			m_nCurrXH=0;
			GetDlgItem(IDC_Btn_Next)->EnableWindow(true);
		}else
		{
			GetDlgItem(IDC_Btn_Next)->EnableWindow(false);
		}
		
		GetDlgItem(IDC_BTN_OPEN)->EnableWindow(false);
	}catch (...) {
		AfxMessageBox("黑名单控制模块打开失败,请尝试关闭本窗口,再打开。");
	}*/
	

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDlgBkM::OnCancel() 
{
	if (pRst->IsOpen()) {
		pRst->Close();
		delete pRst;
	}

	CDialog::OnCancel();
}


//修改布控
void CDlgBkM::OnEditBk() 
{
	SetAddWindow(2);
}

void CDlgBkM::OnDelBk() 
{
	// TODO: Add your control notification handler code here
	CVideoCaptureView* pView=CVideoCaptureView::GetView();
	if(!pView)
		return ;

	if (m_list.GetItemCount()<1) {
		AfxMessageBox("没有数据可以删除。");
		return;
	}

	if(n_item>=m_list.GetItemCount())
		return;
	
	try
	{		
		CString sHPHM;
		sHPHM=m_list.GetItemText(n_item,0);
		CString str;
		str.Format("delete from WZBK where HPHM='%s'",sHPHM);
		pView->pConn->Execute(str);
		
		m_nPos=m_nCurrXH+n_item;
		if (m_nPos<0) {
			m_nPos=n_item;
		}	
		pView->Array_DelFromList(sHPHM);

		m_list.DeleteItem(n_item);
	}
	catch (...) {
		WriteLog("设置布控管理--删除数据出错");
		ShowMessage("设置布控管理--删除数据出错",MB_OK | MB_ICONERROR);
	}
	
}

void CDlgBkM::OnAddBk() 
{
	SetAddWindow();	
	

	
}

void CDlgBkM::OnDealBk() 
{
	// TODO: Add your control notification handler code here
	try{
		CVideoCaptureView* pView=CVideoCaptureView::GetView();
		if(!pView)
			return;
		CString str;	
		
		CString str1=m_list.GetItemText(n_item,0);
		if (str1.GetLength()<1)
			return;

		str.Format("update WZBK SET DEAL='1' where HPHM='%s'",str1);
		pView->pConn->Execute(str);
		m_list.SetItemText(n_item,6,"已处理");
		UpdateData(FALSE);
	}
	catch (...) {
		WriteLog("布控管理--修改处理标志失败");
		ShowMessage("修改处理标志失败!",MB_OK | MB_ICONERROR);
	}	
	
}

void CDlgBkM::OnItemclickList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	HD_NOTIFY *phdn = (HD_NOTIFY *) pNMHDR;
	// TODO: Add your control notification handler code here
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	CListCtrl* pLC=(CListCtrl*)GetDlgItem(IDC_LIST_DATA);
	n_item=pNMListView->iItem;
	*pResult = 0;
}



void CDlgBkM::OnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
n_item=pNMListView->iItem;	
	*pResult = 0;
}

void CDlgBkM::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	n_item=pNMListView->iItem;	
	if (m_list.GetItemCount()>0) {
		SetAddWindow(0);		
	}
	*pResult = 0;
}

void CDlgBkM::OnBtnOpen() 
{

	CVideoCaptureView* pView=CVideoCaptureView::GetView();
	if(!pView)
		return;

	if (!pRst->IsOpen() || pRst->GetRecordCount()<1) {
		return;
	}

	if (pRst->IsBof()) {
		AfxMessageBox("没有纪录向前翻!");
		pRst->MoveFirst();
		return;
	}
	if (pRst->IsEof()) {
		pRst->MoveLast();
	}
	m_list.DeleteAllItems();
	CString sSQL ;
	DWORD i=0;	
	try{	
		
		while (!pRst->IsEof() && !pRst->IsBof()) {
			pRst->MovePrevious();
			i++;
			if (i>=MAXRECORD) {				
				break;
			}
			pRst->GetFieldValue("HPHM",sSQL);
			n_item=m_list.InsertItem(0,sSQL);
			int HPYS=0;
			pRst->GetFieldValue("HPYS",HPYS);
			if (HPYS==0) {
				sSQL="蓝色";
			}else if (HPYS==1) {
				sSQL="黄色";
			}else if(HPYS==2){
				sSQL="白色";
			}else{
				sSQL="黑色";
			}
			m_list.SetItemText(n_item,1,sSQL);
			pRst->GetFieldValue("HPZL",sSQL);
			m_list.SetItemText(n_item, 2, sSQL);
			pRst->GetFieldValue("BKYY",sSQL);
			m_list.SetItemText(n_item, 3, sSQL);			
			pRst->GetFieldValue("BKSJ",sSQL);
			m_list.SetItemText(n_item, 4, sSQL);			
			pRst->GetFieldValue("BKDW",sSQL);
			m_list.SetItemText(n_item, 5, sSQL);			
			
			pRst->GetFieldValue("DEAL",sSQL);
			if (sSQL=="0") {
				m_list.SetItemText(n_item,6,"未处理");
			}else
			{
				m_list.SetItemText(n_item,6,"已处理");
			}
			
			pRst->GetFieldValue("CLRQ",sSQL);
			
			m_list.SetItemText(n_item,7,sSQL);			
			
		}
		n_item=m_list.GetItemCount()-1;
		if (m_list.GetItemCount()>0) {
			SetAddWindow(0);
			m_list.EnsureVisible(m_list.GetItemCount()-1,true);
			m_list.SetHotItem(m_list.GetItemCount()-1);
		}
		
	}catch (...) {
//		AfxMessageBox("黑名单控制模块打开失败,请尝试关闭本窗口,再打开。");
	}
	/*
	//从黑名单列表中导入黑名单
	BK strBK;
	CString bkYY;
	
	for(int j=0;j<m_list.GetItemCount();j++){
		m_list.DeleteItem(j);
	}
	
	long iDif=0;
	m_nCurrXH-=500;
	iDif=m_nCurrXH;
	if (m_nCurrXH<0) {
		m_nCurrXH=0;
	}else
		iDif=0;

	for(int i=m_nCurrXH,int k=0;i<m_nCurrXH+500-iDif;i++,k++){	
		try{
			strBK=pView->bkArray.GetAt(i);
			int p=m_list.InsertItem(k,strBK.sHPHM);
			bkYY=pView->Array_FindInBKYYList(strBK.nBKYY);			
			m_list.SetItemText(p,3,bkYY);
		}catch (...) {
		}

⌨️ 快捷键说明

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