// ViewLiveCam.cpp : 备泅 颇老涝聪促. // #include "stdafx.h" #include "EdgeInspector_App.h" #include "ViewMain_LiveCam.h" #include "afxdialogex.h" #include "Global_Define.h" // CViewLiveCam 措拳 惑磊涝聪促. IMPLEMENT_DYNAMIC(CViewMain_LiveCam, CDialogEx) CViewMain_LiveCam::CViewMain_LiveCam(CWnd* pParent /*=NULL*/) : CDialogEx(CViewMain_LiveCam::IDD, pParent) { m_IV2M = NULL; m_pGlassData = NULL; m_pHardware = NULL; for(int i=0;iGetCameraIndexToDimension((DimensionDir)nSide); } return nIndex; } void CViewMain_LiveCam::SetRecipe(CHardwareSettings *pHW) { m_pHardware = pHW; int nSide,i; LPBYTE plpBuf = NULL; for(i = 0 ; i < 4 ; i++) { nSide = LiveGetSideIdx(i); m_frameImg[i].SetSide(nSide); plpBuf = NULL; if(m_IV2M != NULL) plpBuf = m_IV2M->IV2M_GetGrabBufferByDimension((DimensionDir)nSide,0); m_frameImg[i].SetImage(plpBuf); m_frameImg[i].SetGlassData(m_pGlassData); } } BOOL CViewMain_LiveCam::OnInitDialog() { UpdateData(FALSE); CRect rc[4]; int i =0; GetDlgItem(IDC_STATIC_CAM1)->GetWindowRect(rc[0]); GetDlgItem(IDC_STATIC_CAM2)->GetWindowRect(rc[1]); GetDlgItem(IDC_STATIC_CAM3)->GetWindowRect(rc[2]); GetDlgItem(IDC_STATIC_CAM4)->GetWindowRect(rc[3]); for(i = 0 ; i < 4 ; i++) { ScreenToClient(rc[i]); m_frameImg[i].InitBitMap(); m_frameImg[i].Create(NULL,NULL,WS_VISIBLE | WS_CHILD,rc[i],this,0); m_dZoom[i] = 1; m_frameImg[i].SetZommMode(m_dZoom[i]); m_frameImg[i].ViewUpdate(); } InitScrollInfo(-1); return TRUE; } int CViewMain_LiveCam::LiveGetSideIdx(int nViewIndex) { if(m_pHardware == NULL) return 0; CCameraSettings *pCamera = NULL; pCamera = m_pHardware->GetCameraSettings(nViewIndex,0); if(pCamera == NULL) return 0; return (int)pCamera->m_eDimension; } BOOL CViewMain_LiveCam::PreTranslateMessage(MSG* pMsg) { if( pMsg->message == WM_KEYDOWN ) { if(pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE ) { ::TranslateMessage(pMsg); ::DispatchMessage(pMsg); return TRUE; // DO NOT process further } } return CDialog::PreTranslateMessage(pMsg); } void CViewMain_LiveCam::OnBnClickedBtnCamLive() { OnBnClickedBtnStop(); int nDisplayFrame = 0; if(m_nRdoSignal == 0) { nDisplayFrame = 20; } if(m_IV2M != NULL) { m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(0),FALSE); m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(1),FALSE); m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(2),FALSE); m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(3),FALSE); } SetTimer(1,100,NULL); } void CViewMain_LiveCam::OnTimer(UINT_PTR nIDEvent) { for(int i = 0 ; i < 4 ; i++) { m_frameImg[i].ViewUpdate(); } CDialogEx::OnTimer(nIDEvent); } void CViewMain_LiveCam::OnBnClickedBtnStop() { if(m_IV2M != NULL) { m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(0),TRUE); m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(1),TRUE); m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(2),TRUE); m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(3),TRUE); } KillTimer(1); } void CViewMain_LiveCam::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: 咯扁俊 皋矫瘤 贸府扁 内靛甫 眠啊 棺/肚绰 扁夯蔼阑 龋免钦聪促. int nIndex; if(pScrollBar->m_hWnd == m_ctrlScrollH[0].m_hWnd) { nIndex = 0; } else if(pScrollBar->m_hWnd == m_ctrlScrollH[1].m_hWnd) { nIndex = 1; } else if(pScrollBar->m_hWnd == m_ctrlScrollH[2].m_hWnd) { nIndex = 2; } else if(pScrollBar->m_hWnd == m_ctrlScrollH[3].m_hWnd) { nIndex = 3; } if(nIndex != -1) { SCROLLINFO si; si.fMask=SIF_ALL; m_ctrlScrollH[nIndex].GetScrollInfo(&si,SIF_ALL); switch(nSBCode) { case SB_LINEUP: si.nPos--; break; case SB_LINEDOWN: si.nPos++; break; case SB_PAGEUP: si.nPos-=si.nPage; break; case SB_PAGEDOWN: si.nPos+=si.nPage; break; case SB_THUMBTRACK: si.nPos=nPos; break; } if(si.nPos>(int)(si.nMax-si.nMin-si.nPage+1)) si.nPos=si.nMax-si.nMin-si.nPage+1; if(si.nPos 0) { m_dZoom[nIndex] += 0.1; if(m_dZoom[nIndex] > 4) m_dZoom[nIndex] = 4; } else { m_dZoom[nIndex] -= 0.1; if(m_dZoom[nIndex] < 0.1) m_dZoom[nIndex] = 0.1; } UpdateZoom(nIndex); return CDialogEx::OnMouseWheel(nFlags, zDelta, pt); } void CViewMain_LiveCam::UpdateZoom(int nIndex) { if(nIndex == -1) { for(int i = 0; i < MAX_CAMERA_COUNT;i++) { m_frameImg[i].SetZommMode(m_dZoom[i]); InitScrollInfo(-1); m_frameImg[i].Invalidate(FALSE); } } else { m_frameImg[nIndex].SetZommMode(m_dZoom[nIndex]); InitScrollInfo(nIndex); m_frameImg[nIndex].Invalidate(FALSE); } }