📄 dlgdataview.cpp
字号:
// 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 + -