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

📄 dlgdataview.cpp

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

#include "stdafx.h"
#include "VideoCapture.h"
#include "DlgDataView.h"
#include "VideoCaptureView.h"
#include "ADODB.h"
//#include "DlgLicense.h"
//打印动态库 调用函数 id为XH序号,num为打印第几张图片,if(PreView!=0) 打印预览 else 直接打印
typedef int (__stdcall * pPrintRecord)(int id,int num,int PreView=1); 
typedef int (__stdcall * pPrintFile)(PCHAR  pszParam,PCHAR pszFileName,int PreView=1,int Num=1); 

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

/////////////////////////////////////////////////////////////////////////////
// CDlgDataView dialog


CDlgDataView::CDlgDataView(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgDataView::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgDataView)
	m_sPDate = _T("");
	//}}AFX_DATA_INIT
	m_pHaoPai=NULL;

}


void CDlgDataView::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgDataView)
	DDX_Control(pDX, IDC_COMBO2, m_color);
	DDX_Control(pDX, IDC_COMBO_LAST_LICENSE2, m_LastLicense2);
	DDX_Control(pDX, IDC_COMBO_FIRST_LICENSE2, m_FirstLicense2);
	DDX_Control(pDX, IDC_MMCONTROL, m_avi);
	DDX_Text(pDX, IDC_CAP_DATE, m_sPDate);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgDataView, CDialog)
	//{{AFX_MSG_MAP(CDlgDataView)
	ON_WM_PAINT()
	ON_EN_CHANGE(IDC_CAR_TYPE, OnChangeCarType)
	ON_EN_CHANGE(IDC_EDIT_ALARM, OnChangeEditAlarm)
	ON_WM_LBUTTONDOWN()
	ON_BN_CLICKED(IDC_DELETE, OnDelete)
	ON_BN_CLICKED(IDC_PRE, OnPre)
	ON_BN_CLICKED(IDC_NEXT, OnNext)
	ON_BN_CLICKED(IDC_FIRST, OnFirst)
	ON_BN_CLICKED(IDC_LAST, OnLast)
	ON_BN_CLICKED(IDC_BUTTON_PRINT_PRE, OnButtonPrintPre)
	ON_BN_CLICKED(IDC_BUTTON_PRINT, OnButtonPrint)
	ON_EN_CHANGE(IDC_LICENSE2, OnChangeLicense2)
	ON_CBN_CLOSEUP(IDC_COMBO_FIRST_LICENSE2, OnCloseupComboFirstLicense2)
	ON_CBN_CLOSEUP(IDC_COMBO_LAST_LICENSE2, OnCloseupComboLastLicense2)
	ON_BN_CLICKED(IDC_BUTTON_SEND, OnButtonSend)
	ON_CBN_CLOSEUP(IDC_COMBO_CAR_TYPE, OnCloseupComboCarType)
	ON_CBN_CLOSEUP(IDC_COMBO_ALARM, OnCloseupComboAlarm)
	ON_BN_CLICKED(IDC_BUTTON_BK, OnButtonBk)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgDataView message handlers

BOOL CDlgDataView::OnInitDialog() 
{
	CDialog::OnInitDialog();

	//连接数据库
	CVideoCaptureView* pView=CVideoCaptureView::GetView();
	if(!pView) return FALSE;
	pRstGlobal=new CADODataset();
	pRstGlobal->SetConnection(pView->pConn);
	
	pView->IsCapturing=FALSE;
	
	IsAVI=FALSE;

	//读取车牌颜色
	CStdioFile* pTxtFile = new CStdioFile();
	try
	{
		if(!pTxtFile->Open(".\\Color.dat",CFile::modeRead | CFile::typeText))
		{
			m_color.ResetContent();
			pTxtFile->Open(".\\Color.dat",CFile::modeWrite | CFile::modeCreate);
			
			
			pTxtFile->WriteString("蓝\n");
			pTxtFile->WriteString("黄\n");
			pTxtFile->WriteString("白\n");				
			m_color.InsertString(0,"蓝");
			m_color.InsertString(0,"蓝");
			m_color.InsertString(0,"白");	
		}
		else
		{
			m_color.ResetContent();
			CString str;
			while(pTxtFile->GetPosition()<pTxtFile->GetLength())
			{
				pTxtFile->ReadString(str);
				m_color.InsertString(m_color.GetCount(),str);
			}
		}
		pTxtFile->Close();
		delete pTxtFile;
	}
	catch (...) {
		WriteLog("读写文件Color.dat失败");
		delete pTxtFile;
	}
	((CComboBox *)GetDlgItem(IDC_COMBO2))->SetCurSel(0);

	
	//读取路段信息
	CString str;
	CString sDLBM,sDLMC;
	CComboBox* pCb=(CComboBox*)GetDlgItem(IDC_CAP_ADDRESS);
	if(pCb)
	{
		str.Format("select DLBM,DLMC from DLBM order by dlbm asc");
		pCb->ResetContent();
		try
		{
			pRstGlobal->Open(str,CADODataset::openQuery);
			if (pRstGlobal->IsEof()) {			
				str.Format("insert into DLBM (dlbm,dlmc)values('CSLD','测试路段')");
				pView->pConn->Execute(str);

			}
			while (!pRstGlobal->IsEof()) {
				pRstGlobal->GetFieldValue("dlbm",sDLBM);
				pRstGlobal->GetFieldValue("dlmc",sDLMC);
				pCb->AddString(sDLMC);				
				pRstGlobal->MoveNext();
			}
		}catch (...) {				
		}
		pCb->SetCurSel(0);
	}

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

	//车辆类型
	try{
		CComboBox *pComb=(CComboBox *)GetDlgItem(IDC_COMBO1);
		str="select hpzl,zlms from hpzl order by hpzl asc";
		pRstGlobal->Open(str,CADODataset::openQuery);
		long nValue,nIndex;
		CString sValue;
		while (!pRstGlobal->IsEof()) {
			pRstGlobal->GetFieldValue("hpzl",sValue);
			nValue=atoi(sValue);
			pRstGlobal->GetFieldValue("zlms",sValue);
			nIndex=pComb->AddString(sValue);
			pComb->SetItemData(nIndex,nValue);
			pRstGlobal->MoveNext();
		}
		
	}catch (...) {		
	}
	
	if (pRstGlobal->IsOpen()) {
		pRstGlobal->Close();
	}

	((CButton*)GetDlgItem(IDC_PRE))->SetIcon(AfxGetApp()->LoadIcon(IDI_PRE));
	((CButton*)GetDlgItem(IDC_NEXT))->SetIcon(AfxGetApp()->LoadIcon(IDI_NEXT));
	((CButton*)GetDlgItem(IDC_FIRST))->SetIcon(AfxGetApp()->LoadIcon(IDI_FIRST));
	((CButton*)GetDlgItem(IDC_LAST))->SetIcon(AfxGetApp()->LoadIcon(IDI_LAST));
	((CEdit*)GetDlgItem(IDC_LICENSE2))->SetLimitText(12);
	

	
	try{
		int iIndex=0;
		pRstGlobal->Open("select * from WZLX order by yxj desc ,wzbh desc ",CADODataset::openQuery);
		CString cartype;
		long nDM;
		while(!pRstGlobal->IsEof())
		{
			pRstGlobal->GetFieldValue("WZMS",cartype);
			iIndex=((CComboBox*)GetDlgItem(IDC_COMBO_ALARM))->AddString(cartype);
			pRstGlobal->GetFieldValue("WZBH",cartype);
			nDM=atol(cartype);			
			((CComboBox*)GetDlgItem(IDC_COMBO_ALARM))->SetItemData(iIndex,nDM);
			pRstGlobal->MoveNext();
		}
		pRstGlobal->Close();
		
	}catch (...) {
	}

	//设置车型和违章类型
//	OnChangeEditAlarm();
//	OnChangeCarType();


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

	//设置车牌汉字选择框
	((CEdit*)GetDlgItem(IDC_LICENSE2))->SetLimitText(12);
	pRstGlobal->Open("select * from HPHZ",CADODataset::openQuery);
	int i=1;
	CString text,text1;
	
	while (!pRstGlobal->IsEof())
	{		
		pRstGlobal->GetFieldValue("HZ",text);		
		text1.Format("%s",text);	
		m_FirstLicense2.AddString(text1);		
		pRstGlobal->MoveNext();
		i++;
	}
	pRstGlobal->Close();

	//获得红色矩形,用于突出显示选中的缩微图
	RedFrameDC.CreateCompatibleDC(GetDC());
	CBitmap bmp;
	bmp.LoadBitmap(IDB_RED_FRAME);
	RedFrameDC.SelectObject(&bmp);


	bigBMP=-1;
	//初始化DIB位图对象
	for(i=0;i<12;i++)
	{
		m_pDib[i]=NULL;
	
	}	

	return OpenRecord(m_lRecordID);
}

BOOL CDlgDataView::DestroyWindow() 
{
	for(int i=0;i<8;i++)
		if(m_pDib[i])
		{
			delete m_pDib[i];//->DeleteObject();
			m_pDib[i]=NULL;
		}

	if(m_pHaoPai)
	{
		delete m_pHaoPai;
		m_pHaoPai=NULL;
	}

	delete	pRstGlobal;//->~CADODataset();
	pRstGlobal=NULL;
	RedFrameDC.ReleaseAttribDC();
	return CDialog::DestroyWindow();
}

void CDlgDataView::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	CRect rect;
	CRect rect1;
	long cx,cy;
	if(bigBMP!=-1)
	{
		
		if (!IsAVI){
			if (bigBMP<4) {
				GetDlgItem(IDC_STATIC_BIG)->GetWindowRect(&rect);
				ScreenToClient(&rect);
				rect.top+=15;rect.left+=5;rect.right-=5;rect.bottom-=5;
				m_pDib[bigBMP]->PaintDIB(dc,rect,CRect(0,0,m_pDib[bigBMP]->DIBWidth(),m_pDib[bigBMP]->DIBHeight()));
			}

			//红色的框表示该图被选中
			GetDlgItem(IDC_STATIC_SMALL)->GetWindowRect(&rect);
			ScreenToClient(&rect);
			rect.top+=10;
			
			cx=rect.Width()/2-7;
			cy=rect.Height()/2-7;
			switch(bigBMP) {
			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;
			}
			dc.StretchBlt(rect1.left-1,rect1.top-1,rect1.Width()+2,rect1.Height()+2,&RedFrameDC,0,0,4,3,SRCCOPY);
		}
		
	}

	GetDlgItem(IDC_STATIC_SMALL)->GetWindowRect(&rect);
	ScreenToClient(&rect);
	rect.top+=10;	
	cx=rect.Width()/2-7;
	cy=rect.Height()/2-7;
//	if (pView->m_nNumBmp==3) {		
		if(m_pDib[0] && !m_pDib[0]->IsNULL())
			m_pDib[0]->PaintDIB(dc,CRect(rect.left+5,rect.top+5,rect.left+5+cx,rect.top+5+cy),CRect(0,0,m_pDib[0]->DIBWidth(),m_pDib[0]->DIBHeight()));
		if(m_pDib[1] && !m_pDib[1]->IsNULL())
			m_pDib[1]->PaintDIB(dc,CRect(rect.left+5+cx+10,rect.top+5,rect.right-5,rect.top+5+cy),CRect(0,0,m_pDib[1]->DIBWidth(),m_pDib[1]->DIBHeight()));
		if(m_pDib[2] && !m_pDib[2]->IsNULL())
			m_pDib[2]->PaintDIB(dc,CRect(rect.left+5,rect.top+5+cy+10,rect.left+5+cx,rect.bottom-5),CRect(0,0,m_pDib[2]->DIBWidth(),m_pDib[2]->DIBHeight()));
		if(m_pDib[3] && !m_pDib[3]->IsNULL())
			m_pDib[3]->PaintDIB(dc,CRect(rect.left+5+cx+10,rect.top+5+cy+10,rect.right-5,rect.bottom-5),CRect(0,0,m_pDib[3]->DIBWidth(),m_pDib[3]->DIBHeight()));

//	}

	////
	//为山东特意修改
		/*
	for(int i=0;i<4;i++)
	{
		if(m_pDib[i+4] && !m_pDib[i+4]->IsNULL())
			m_pDib[i+4]->PaintDIB(dc,CRect(645+111,1+i*(76+5),645+211,(i+1)*76+5*i),CRect(0,0,m_pDib[i]->DIBWidth(),m_pDib[i]->DIBHeight()));
	}
	*/
	
	
	if(m_pHaoPai){
		CDC *pDC= GetDlgItem(IDC_STATIC_HPHM_P)->GetDC();		
		GetDlgItem(IDC_STATIC_HPHM_P)->GetWindowRect(&rect);
		ScreenToClient(&rect);
		m_pHaoPai->PaintDIB(pDC,CRect(0,0,rect.Width(),rect.Height()), CRect(0,0,m_pHaoPai->DIBWidth(),m_pHaoPai->DIBHeight()));
		ReleaseDC(pDC);
	}
	//sHPHM 画号牌文字
	if (sHPHM!="") {
		CDC *pDC= GetDlgItem(IDC_STATIC_HPHM)->GetDC();
		GetDlgItem(IDC_STATIC_HPHM)->GetClientRect(&rect);
		int i=sHPHM.GetLength();
		int iWidth,iHeight;
		iWidth=rect.Width();
		iHeight=rect.Height();
		iWidth=iWidth/i;
		CFont *pOldFont,font;
		iHeight = -MulDiv(48, GetDeviceCaps(pDC->m_hDC, LOGPIXELSY), 72);
		
		font.CreateFont(iHeight,0,0,0,FW_BOLD,0,0,0,GB2312_CHARSET,iWidth,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FIXED_PITCH|FF_MODERN,"楷体_GB2312");
		pOldFont=pDC->SelectObject(&font);
		pDC->SetTextColor(RGB(0,0,255));
		pDC->SetBkColor(RGB(125,125,125));
		pDC->TextOut(0,0,sHPHM);
		pDC->SelectObject(pOldFont);
		ReleaseDC(pDC);
	}
	

}

/***-------------------------------------------------------------------------------
根据车型代码,动态设置选择框内汽车类型数据。
过滤作用。显示少量的汽车类型供选择。
-------------------------------------------------------------------------------***/
void CDlgDataView::OnChangeCarType() 
{
	if(pRstGlobal->IsOpen())
		pRstGlobal->Close();
	CString str;
	((CComboBox*)GetDlgItem(IDC_COMBO_CAR_TYPE))->ResetContent();
	GetDlgItem(IDC_CAR_TYPE)->GetWindowText(str);

	if(str=="000")
	{
		str="";
		GetDlgItem(IDC_CAR_TYPE)->SetWindowText(str);
		return;
	}
	//if(str!="")
	{
		str=str+"%";
		str.MakeUpper();
		pRstGlobal->Open("select * from CLLX where CLLX like '"+str+"'",CADODataset::openQuery);
		CString cartype;
		while(!pRstGlobal->IsEof())
		{
			pRstGlobal->GetFieldValue("LXMS",cartype);
			((CComboBox*)GetDlgItem(IDC_COMBO_CAR_TYPE))->AddString(cartype);
			((CComboBox*)GetDlgItem(IDC_COMBO_CAR_TYPE))->SelectString(0,cartype);
			pRstGlobal->MoveNext();
		}
		pRstGlobal->Close();
		if(str=="%")
		{
			GetDlgItem(IDC_COMBO_CAR_TYPE)->SetWindowText("");
		}
	}
}

/***-------------------------------------------------------------------------------
根据违章代码,动态设置选择框内违章类型数据。
过滤作用。显示少量的违章类型供选择。
-------------------------------------------------------------------------------***/
void CDlgDataView::OnChangeEditAlarm() 
{	
	CString str;
	GetDlgItem(IDC_EDIT_ALARM)->GetWindowText(str);
	UpdateData();
	if (str.GetLength()<4) {
		return;
	}
	if(str=="0000")
	{
		str="";
		GetDlgItem(IDC_EDIT_ALARM)->SetWindowText(str);
		return;
	}
	
	
	int i,iSum;
	long dm=atol(str);//UpdateData();
	CComboBox * pWnd=(CComboBox*)GetDlgItem(IDC_COMBO_ALARM);
	iSum=pWnd->GetCount();
	for(i=0;i<iSum;i++){
		if (pWnd->GetItemData(i)==dm) {
			pWnd->SetCurSel(i);
			break;
		}
	}
	
}

bool CDlgDataView::SaveToDB()
{
	bool bResult=false;
	if(pRstGlobal->IsOpen())
		pRstGlobal->Close();

	CString sql;
	CString station,cartype,alarm;
	TCHAR license[13];
	GetDlgItem(IDC_CAP_ADDRESS)->GetWindowText(station);

	GetDlgItem(IDC_CAR_TYPE)->GetWindowText(cartype);
	GetDlgItem(IDC_EDIT_ALARM)->GetWindowText(alarm);

	GetDlgItem(IDC_LICENSE2)->GetWindowText(license,13);

	sHPHM=license;
	

	//获得车辆类型
	CString HPZL,ZLMS;
	GetDlgItem(IDC_COMBO1)->GetWindowText(ZLMS);
	
	CComboBox *pComb=(CComboBox *)GetDlgItem(IDC_COMBO1);
	int i;
	i=pComb->GetCurSel();
	if (i>-1) {
		HPZL.Format("%0.2d",pComb->GetItemData(i));
	}else{
		HPZL="24";
	}

	CString jszh;
	
	CString CLYS="黑";
	
	GetDlgItem(IDC_COMBO2)->GetWindowText(CLYS);
	if (CLYS.GetLength()>4)
		CLYS=CLYS.Left(4);
	
	if(m_CLBJ==0 || m_CLBJ==5)//没校对 或无效,进行校对保存
		sql.Format("update record set HPZL ='%s', WZDD ='%s', WZBH='%s', HPHM='%s', CLLX='%s', JSZH='%s', CLBJ='3', CLYS='%s' where XH=%d",HPZL,station,alarm,license,cartype,jszh,CLYS,m_lRecordID);	
	else
		sql.Format("update record set HPZL ='%s', WZDD ='%s', WZBH='%s', HPHM='%s', CLLX='%s', JSZH='%s', CLYS='%s' where XH=%d",HPZL,station,alarm,license,cartype,jszh,CLYS,m_lRecordID);
	try
	{		
		bResult=pRstGlobal->ExecSql(sql);	
		pRstGlobal->Update();
	}
	catch (...) {
		WriteLog("保存修改出错");
		ShowMessage("保存修改出错");	
	}
	return bResult;
	
}

void CDlgDataView::OnOK() 
{
	if(SaveToDB())
		AfxMessageBox("校对保存成功!");
	else{
		AfxMessageBox("校对保存失败!");
		return;
	}

	SendMessage(WM_PAINT);

⌨️ 快捷键说明

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