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