// ViewScanImage.cpp : ±¸Çö ÆÄÀÏÀÔ´Ï´Ù. // #include "stdafx.h" #include "ENRIT.h" #include "ViewScanImage.h" #include "afxdialogex.h" #include "Global_Define.h" #include "Glass_Data.h" enum TYPE_MANUAL_CMD { M_CMD_PROC_SHORT_START, M_CMD_PROC_LONG_START, M_CMD_PROC_ALL_START, M_CMD_IMG_LOAD_ALL, M_CMD_IMG_SAVE_ALL, M_CMD_IMG_LOAD_SIDE, M_CMD_IMG_SAVE_SIDE, }; // CViewScanImage ´ëÈ­ »óÀÚÀÔ´Ï´Ù. IMPLEMENT_DYNAMIC(CViewScanImage, CDialogEx) CViewScanImage::CViewScanImage(CWnd* pParent /*=NULL*/) : CDialogEx(CViewScanImage::IDD, pParent) { m_nShowSelect =0; m_dZoom = 1; m_pManualProcess = NULL; m_nIndex = 0; m_nThreadCmd = 0; m_IV2M = NULL; m_pHardware = NULL; m_pGlassData = NULL; } CViewScanImage::~CViewScanImage() { } void CViewScanImage::DoDataExchange(CDataExchange* pDX) { DDX_Control(pDX, IDC_SCROLLBAR_V_1 , m_ctrlScrollV[0]); DDX_Control(pDX, IDC_SCROLLBAR_V_2 , m_ctrlScrollV[1]); DDX_Control(pDX, IDC_SCROLLBAR_V_3 , m_ctrlScrollV[2]); DDX_Control(pDX, IDC_SCROLLBAR_V_4 , m_ctrlScrollV[3]); DDX_Control(pDX, IDC_SCROLLBAR_V_5 , m_ctrlScrollV[4]); DDX_Control(pDX, IDC_SCROLLBAR_V_6 , m_ctrlScrollV[5]); DDX_Control(pDX, IDC_SCROLLBAR_V_7 , m_ctrlScrollV[6]); DDX_Control(pDX, IDC_SCROLLBAR_V_8 , m_ctrlScrollV[7]); DDX_Control(pDX, IDC_SCROLLBAR_H_1 , m_ctrlScrollH[0]); DDX_Control(pDX, IDC_SCROLLBAR_H_2 , m_ctrlScrollH[1]); DDX_Control(pDX, IDC_SCROLLBAR_H_3 , m_ctrlScrollH[2]); DDX_Control(pDX, IDC_SCROLLBAR_H_4 , m_ctrlScrollH[3]); DDX_Control(pDX, IDC_SCROLLBAR_H_5 , m_ctrlScrollH[4]); DDX_Control(pDX, IDC_SCROLLBAR_H_6 , m_ctrlScrollH[5]); DDX_Control(pDX, IDC_SCROLLBAR_H_7 , m_ctrlScrollH[6]); DDX_Control(pDX, IDC_SCROLLBAR_H_8 , m_ctrlScrollH[7]); DDX_Control(pDX, IDC_BTN_LOAD1 , m_btnLoad[0]); DDX_Control(pDX, IDC_BTN_LOAD2 , m_btnLoad[1]); DDX_Control(pDX, IDC_BTN_LOAD3 , m_btnLoad[2]); DDX_Control(pDX, IDC_BTN_LOAD4 , m_btnLoad[3]); DDX_Control(pDX, IDC_BTN_LOAD5 , m_btnLoad[4]); DDX_Control(pDX, IDC_BTN_LOAD6 , m_btnLoad[5]); DDX_Control(pDX, IDC_BTN_LOAD7 , m_btnLoad[6]); DDX_Control(pDX, IDC_BTN_LOAD8 , m_btnLoad[7]); DDX_Control(pDX, IDC_BTN_SAVE1 , m_btnSave[0]); DDX_Control(pDX, IDC_BTN_SAVE2 , m_btnSave[1]); DDX_Control(pDX, IDC_BTN_SAVE3 , m_btnSave[2]); DDX_Control(pDX, IDC_BTN_SAVE4 , m_btnSave[3]); DDX_Control(pDX, IDC_BTN_SAVE5 , m_btnSave[4]); DDX_Control(pDX, IDC_BTN_SAVE6 , m_btnSave[5]); DDX_Control(pDX, IDC_BTN_SAVE7 , m_btnSave[6]); DDX_Control(pDX, IDC_BTN_SAVE8 , m_btnSave[7]); DDX_Control(pDX, IDC_UPDN_WIDTH1 , m_chkWithScorll[0]); DDX_Control(pDX, IDC_UPDN_WIDTH2 , m_chkWithScorll[1]); DDX_Control(pDX, IDC_UPDN_WIDTH3 , m_chkWithScorll[2]); DDX_Control(pDX, IDC_UPDN_WIDTH4 , m_chkWithScorll[3]); DDX_Control(pDX, IDC_UPDN_WIDTH5 , m_chkWithScorll[4]); DDX_Control(pDX, IDC_UPDN_WIDTH6 , m_chkWithScorll[5]); DDX_Control(pDX, IDC_UPDN_WIDTH7 , m_chkWithScorll[6]); DDX_Control(pDX, IDC_UPDN_WIDTH8 , m_chkWithScorll[7]); DDX_Control(pDX, IDC_STATIC_CAM_INFO1 , m_staticCamInfo[0]); DDX_Control(pDX, IDC_STATIC_CAM_INFO2 , m_staticCamInfo[1]); DDX_Control(pDX, IDC_STATIC_CAM_INFO3 , m_staticCamInfo[2]); DDX_Control(pDX, IDC_STATIC_CAM_INFO4 , m_staticCamInfo[3]); DDX_Control(pDX, IDC_STATIC_CAM_INFO5 , m_staticCamInfo[4]); DDX_Control(pDX, IDC_STATIC_CAM_INFO6 , m_staticCamInfo[5]); DDX_Control(pDX, IDC_STATIC_CAM_INFO7 , m_staticCamInfo[6]); DDX_Control(pDX, IDC_STATIC_CAM_INFO8 , m_staticCamInfo[7]); DDX_Control(pDX, IDC_SLIDER_ZOOM, m_sliderZoom); CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CViewScanImage, CDialogEx) ON_WM_VSCROLL() ON_WM_HSCROLL() ON_BN_CLICKED(IDC_BTN_LOAD1, &CViewScanImage::OnBnClickedBtnLoad1) ON_BN_CLICKED(IDC_BTN_SAVE1, &CViewScanImage::OnBnClickedBtnSave1) ON_BN_CLICKED(IDC_BTN_LOAD2, &CViewScanImage::OnBnClickedBtnLoad2) ON_BN_CLICKED(IDC_BTN_SAVE2, &CViewScanImage::OnBnClickedBtnSave2) ON_BN_CLICKED(IDC_BTN_LOAD3, &CViewScanImage::OnBnClickedBtnLoad3) ON_BN_CLICKED(IDC_BTN_SAVE3, &CViewScanImage::OnBnClickedBtnSave3) ON_BN_CLICKED(IDC_BTN_LOAD4, &CViewScanImage::OnBnClickedBtnLoad4) ON_BN_CLICKED(IDC_BTN_SAVE4, &CViewScanImage::OnBnClickedBtnSave4) ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_ZOOM, &CViewScanImage::OnNMCustomdrawSliderZoom) ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_ZOOM, &CViewScanImage::OnNMReleasedcaptureSliderZoom) ON_WM_MOUSEWHEEL() ON_BN_CLICKED(IDC_UPDN_WIDTH1, &CViewScanImage::OnBnClickedUpdnWidth1) ON_BN_CLICKED(IDC_UPDN_WIDTH2, &CViewScanImage::OnBnClickedUpdnWidth2) ON_BN_CLICKED(IDC_UPDN_WIDTH3, &CViewScanImage::OnBnClickedUpdnWidth3) ON_BN_CLICKED(IDC_UPDN_WIDTH4, &CViewScanImage::OnBnClickedUpdnWidth4) ON_BN_CLICKED(IDC_UPDN_WIDTH6, &CViewScanImage::OnBnClickedUpdnWidth6) ON_BN_CLICKED(IDC_UPDN_WIDTH5, &CViewScanImage::OnBnClickedUpdnWidth5) ON_BN_CLICKED(IDC_UPDN_WIDTH7, &CViewScanImage::OnBnClickedUpdnWidth7) ON_BN_CLICKED(IDC_UPDN_WIDTH8, &CViewScanImage::OnBnClickedUpdnWidth8) ON_BN_CLICKED(IDC_BTN_LOAD5, &CViewScanImage::OnBnClickedBtnLoad5) ON_BN_CLICKED(IDC_BTN_SAVE5, &CViewScanImage::OnBnClickedBtnSave5) ON_BN_CLICKED(IDC_BTN_LOAD6, &CViewScanImage::OnBnClickedBtnLoad6) ON_BN_CLICKED(IDC_BTN_SAVE6, &CViewScanImage::OnBnClickedBtnSave6) ON_BN_CLICKED(IDC_BTN_LOAD7, &CViewScanImage::OnBnClickedBtnLoad7) ON_BN_CLICKED(IDC_BTN_SAVE7, &CViewScanImage::OnBnClickedBtnSave7) ON_BN_CLICKED(IDC_BTN_LOAD8, &CViewScanImage::OnBnClickedBtnLoad8) ON_BN_CLICKED(IDC_BTN_SAVE8, &CViewScanImage::OnBnClickedBtnSave8) ON_BN_CLICKED(IDC_CHECK_AUTO_SIZE, &CViewScanImage::OnBnClickedCheckAutoSize) ON_WM_SHOWWINDOW() ON_WM_TIMER() ON_WM_PAINT() ON_MESSAGE(WM_POCESS_STATUS , OnProcessStatus) END_MESSAGE_MAP() BEGIN_EVENTSINK_MAP(CViewScanImage, CDialogEx) ON_EVENT(CViewScanImage, IDC_BTN_IMG_SHORT, DISPID_CLICK, CViewScanImage::OnBnClickedBtnImgShort, VTS_NONE) ON_EVENT(CViewScanImage, IDC_BTN_IMG_LONG, DISPID_CLICK, CViewScanImage::OnBnClickedBtnImgLong, VTS_NONE) ON_EVENT(CViewScanImage, IDC_BTN_IMG_BOTH, DISPID_CLICK, CViewScanImage::OnBnClickedBtnImgBoth, VTS_NONE) ON_EVENT(CViewScanImage, IDC_BTN_INIT_DISPLAY, DISPID_CLICK, CViewScanImage::OnBnClickedBtnInitDisplay, VTS_NONE) ON_EVENT(CViewScanImage, IDC_BTN_PROC, DISPID_CLICK, CViewScanImage::OnBnClickedBtnProc, VTS_NONE) ON_EVENT(CViewScanImage, IDC_BTN_LOAD_ALL, DISPID_CLICK, CViewScanImage::OnBnClickedLoadAll, VTS_NONE) ON_EVENT(CViewScanImage, IDC_SAVE_ALL, DISPID_CLICK, CViewScanImage::OnBnClickedSaveAll, VTS_NONE) END_EVENTSINK_MAP() // CViewScanImage ¸Þ½ÃÁö 󸮱âÀÔ´Ï´Ù. BOOL CViewScanImage::OnInitDialog() { UpdateData(FALSE); m_sliderZoom.SetRange(0,8); m_sliderZoom.SetPos(0); int i; for( i = 0; i < MAX_PANEL_SIDE * UPDN_TYPE;i++) { m_btnLoad[i].m_bTransparent = TRUE; m_btnSave[i].m_bTransparent = TRUE; m_btnLoad[i].SetImage(IDB_BTN_LOAD, IDB_BTN_LOAD_PUSH); m_btnSave[i].SetImage(IDB_BTN_SAVE, IDB_BTN_SAVE_PUSH); m_chkWithScorll[i].SetImage(IDB_LED_OFF); m_chkWithScorll[i].SetCheckedImage(IDB_LED_ON); m_bWithScroll[i] = 1; } int nSide; CRect rc2(0,0,10,10); for(i = 0 ; i < MAX_PANEL_SIDE * UPDN_TYPE; i++) { nSide = GetSideIdx(i); //C,CB A, AB, D,DB , B,BB m_frameImg[i].SetSide(nSide); m_frameImg[i].InitBitMap(); m_frameImg[i].SetGlassData(m_pGlassData); m_frameImg[i].Create(NULL,NULL,WS_VISIBLE | WS_CHILD,rc2,this,0); m_frameImg[i].SetImage(GetBufferPoint(i,0)); } m_bInitDlg = TRUE; ChangeCtrPos(3); SetZoom(0.2); m_nShowSelect = 0; return TRUE; } BOOL CViewScanImage::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 CViewScanImage::OnShowWindow(BOOL bShow, UINT nStatus) { if(bShow == TRUE) { int nSide; CString strTitle; for(int i = 0 ; i < MAX_PANEL_SIDE * UPDN_TYPE; i++) { nSide = GetSideIdx(i); m_frameImg[i].SetSide(nSide); m_frameImg[i].SetGlassData(m_pGlassData); m_frameImg[i].SetImage(GetBufferPoint(i,0)); m_frameImg[i].ViewUpdate(); if(m_pHardware != NULL) { CCameraSettings *pCamera = NULL; if(i < MAX_PANEL_SIDE) // Long side { pCamera = m_pHardware->GetCameraSettings(i,0); } else { pCamera = m_pHardware->GetCameraSettings(i%MAX_PANEL_SIDE,1); } pCamera->m_iCamera; pCamera->m_iScan; strTitle.Format(_T("BORD[%d] CHANNEL[%d]"),pCamera->m_iCamera,pCamera->m_iScan); m_staticCamInfo[i].SetWindowText(strTitle); } } m_bInitDlg = TRUE; ChangeCtrPos(m_nShowSelect); SetZoom(0.2); } } void CViewScanImage::OnPaint() { CPaintDC dc(this); // device context for painting } void CViewScanImage::SetZoom(double dZoom) { m_dZoom = dZoom; UpdateZoom(); } void CViewScanImage::SetGlassData(CGlass_Data* pGlass) { m_pGlassData = pGlass; } BYTE* CViewScanImage::GetBufferPoint(int nViewIndex,int nPos /*= 0*/) { BYTE *add = NULL; int nIdx_Side = GetSideIdx(nViewIndex); LPBYTE plpBuf = NULL; if(m_IV2M != NULL) plpBuf = m_IV2M->IV2M_GetGrabBufferByDimension((DimensionDir)nIdx_Side,nPos); return plpBuf; } LRESULT CViewScanImage::OnProcessStatus(WPARAM wParam, LPARAM lParam) { PROG_MSG MsgJob = *((PROG_MSG*)wParam); int nIndex = GetViewIndex(MsgJob.nSide); if(MsgJob.nState == 2) { InitScrollInfo(MsgJob.nSide,1); m_ctrlScrollV[nIndex].EnableWindow(TRUE); double dZoom = m_frameImg[nIndex].GetZoomData(); m_frameImg[nIndex].m_ptOrg.y = MsgJob.nDispLine; if(m_pGlassData != NULL) { INS_EDGE_RESULT_INFO *pEdgeInfo = m_pGlassData->GetEdgeResultInfo((DimensionDir)MsgJob.nSide); if(pEdgeInfo != NULL) m_frameImg[nIndex].m_ptOrg.y = CHKMAX(0,pEdgeInfo->nGlassStartLine - (int)((m_frameImg[nIndex].m_WndRect.Height()/2)/ dZoom)); } m_frameImg[nIndex].SetImage( GetBufferPoint(nIndex,m_frameImg[nIndex].m_ptOrg.y)); m_frameImg[nIndex].SetGlassData(m_pGlassData); m_frameImg[nIndex].ViewUpdate(); } else { if(fabs(m_dZoom - 1.) > 0.01) { m_dZoom = 0.2; m_sliderZoom.SetPos(0); CString strTmp; strTmp.Format(_T("X %.2f"),m_dZoom); GetDlgItem(IDC_ST_ZOOM)->SetWindowText(strTmp); UpdateZoom(); } //g_pLog->DisplayMessage(_T("Frame Display %d"),nIndex); m_frameImg[nIndex].m_ptOrg.y = MsgJob.nDispLine; m_frameImg[nIndex].SetImage(GetBufferPoint(nIndex,m_frameImg[nIndex].m_ptOrg.y)); m_frameImg[nIndex].SetGlassData(m_pGlassData); m_frameImg[nIndex].ViewUpdate(); } return 1; } void CViewScanImage::SetRecipe(CHardwareSettings *pHW) { m_pHardware = pHW; } void CViewScanImage::ResetView() { for(int i = 0; i <8 ; i++) { m_ctrlScrollV[i].EnableWindow(FALSE); } } void CViewScanImage::ViewRefresh(PROG_MSG ProcMsg) { SendMessage(WM_POCESS_STATUS,(WPARAM)&ProcMsg, ProcMsg.nSide); } int CViewScanImage::GetSideIdx(int nViewIndex) { int nID = 0; switch(nViewIndex) { case 0: nID = DIMENSION_C; break; case 1: nID = DIMENSION_C + MAX_PANEL_SIDE; break; case 2: nID = DIMENSION_A; break; case 3: nID = DIMENSION_A + MAX_PANEL_SIDE; break; case 4: nID = DIMENSION_D; break; case 5: nID = DIMENSION_D + MAX_PANEL_SIDE; break; case 6: nID = DIMENSION_B; break; case 7: nID = DIMENSION_B + MAX_PANEL_SIDE; break; default: AfxMessageBox(_T("CViewImage::GetPanelID(int nViewIndex) call Error")); break; } return nID; } void CViewScanImage::ChangeCtrPos(int nMode) { m_nShowSelect = nMode; int nInfo = 20; int nHScroll = 20; int nImgWidth = 450; int nImgHeight = 400; int i = 0; CPoint OrgPt(10,5),pt; pt = OrgPt; SetRedraw(FALSE); for(i = 0; i < 8 ; i ++) { m_btnLoad[i].SetRedraw(FALSE); m_btnSave[i].SetRedraw(FALSE); m_staticCamInfo[i].SetRedraw(FALSE); m_ctrlScrollV[i].SetRedraw(FALSE); m_ctrlScrollH[i].SetRedraw(FALSE); m_chkWithScorll[i].SetRedraw(FALSE); m_frameImg[i].SetRedraw(FALSE); } switch(nMode) { case 0: // Long pt.x = OrgPt.x; pt.y = OrgPt.y; for(i = 0; i < 4; i++) { m_btnLoad[i].MoveWindow(pt.x,pt.y,nInfo,nInfo,FALSE); m_btnSave[i].MoveWindow(pt.x + nImgWidth - nInfo ,pt.y,nInfo,nInfo,FALSE); m_staticCamInfo[i].MoveWindow(pt.x + nInfo ,pt.y,nImgWidth - nInfo *2 ,nInfo,FALSE); m_frameImg[i].MoveWindow(pt.x,pt.y + nInfo,nImgWidth,nImgHeight,FALSE); m_frameImg[i].ChangeRect(); m_chkWithScorll[i].MoveWindow(pt.x + nImgWidth,pt.y + nInfo + nImgHeight,nHScroll,nInfo,FALSE); m_ctrlScrollV[i].MoveWindow(pt.x + nImgWidth,pt.y + nInfo,nHScroll,nImgHeight,FALSE); m_ctrlScrollH[i].MoveWindow(pt.x,pt.y + nInfo + nImgHeight,nImgWidth,nInfo,FALSE); pt.x += nImgWidth + nHScroll; } // Short pt.x = OrgPt.x; pt.y = OrgPt.y + nImgHeight + nInfo + nHScroll + 10; for(i = 4; i < 8; i++) { m_btnLoad[i].MoveWindow(pt.x,pt.y,nInfo,nInfo,FALSE); m_btnSave[i].MoveWindow(pt.x + nImgWidth - nInfo ,pt.y,nInfo,nInfo,FALSE); m_staticCamInfo[i].MoveWindow(pt.x + nInfo ,pt.y,nImgWidth - nInfo *2 ,nInfo,FALSE); m_frameImg[i].MoveWindow(pt.x,pt.y + nInfo,nImgWidth,nImgHeight,FALSE); m_frameImg[i].ChangeRect(); m_chkWithScorll[i].MoveWindow(pt.x + nImgWidth,pt.y + nInfo + nImgHeight,nHScroll,nInfo,FALSE); m_ctrlScrollV[i].MoveWindow(pt.x + nImgWidth,pt.y + nInfo,nHScroll,nImgHeight,FALSE); m_ctrlScrollH[i].MoveWindow(pt.x,pt.y + nInfo + nImgHeight,nImgWidth,nInfo,FALSE); pt.x += nImgWidth + nHScroll; } break; case 1: // long pt.x = OrgPt.x; pt.y = OrgPt.y; nImgHeight = 850; for(i = 0; i < 4; i++) { m_btnLoad[i].MoveWindow(pt.x,pt.y,nInfo,nInfo,FALSE); m_btnSave[i].MoveWindow(pt.x + nImgWidth - nInfo ,pt.y,nInfo,nInfo,FALSE); m_staticCamInfo[i].MoveWindow(pt.x + nInfo ,pt.y,nImgWidth - nInfo *2 ,nInfo,FALSE); m_frameImg[i].MoveWindow(pt.x,pt.y + nInfo,nImgWidth,nImgHeight); m_frameImg[i].ChangeRect(); m_chkWithScorll[i].MoveWindow(pt.x + nImgWidth,pt.y + nInfo + nImgHeight,nHScroll,nInfo,FALSE); m_ctrlScrollV[i].MoveWindow(pt.x + nImgWidth,pt.y + nInfo,nHScroll,nImgHeight,FALSE); m_ctrlScrollH[i].MoveWindow(pt.x,pt.y + nInfo + nImgHeight,nImgWidth,nInfo,FALSE); pt.x += nImgWidth + nHScroll; } break; case 2:// Short pt.x = OrgPt.x; pt.y = OrgPt.y; nImgHeight = 850; for(i = 4; i < 8; i++) { m_btnLoad[i].MoveWindow(pt.x,pt.y,nInfo,nInfo,FALSE); m_btnSave[i].MoveWindow(pt.x + nImgWidth - nInfo ,pt.y,nInfo,nInfo,FALSE); m_staticCamInfo[i].MoveWindow(pt.x + nInfo ,pt.y,nImgWidth - nInfo *2 ,nInfo,FALSE); m_frameImg[i].MoveWindow(pt.x,pt.y + nInfo,nImgWidth,nImgHeight,FALSE); m_frameImg[i].ChangeRect(); m_chkWithScorll[i].MoveWindow(pt.x + nImgWidth,pt.y + nInfo + nImgHeight,nHScroll,nInfo,FALSE); m_ctrlScrollV[i].MoveWindow(pt.x + nImgWidth,pt.y + nInfo,nHScroll,nImgHeight,FALSE); m_ctrlScrollH[i].MoveWindow(pt.x,pt.y + nInfo + nImgHeight,nImgWidth,nInfo,FALSE); pt.x += nImgWidth + nHScroll; } break; case 3: // Long pt.x = OrgPt.x; pt.y = OrgPt.y; for(i = 0; i < 4; i++) { m_btnLoad[i].MoveWindow(pt.x,pt.y,nInfo,nInfo,FALSE); m_btnSave[i].MoveWindow(pt.x + nImgWidth - nInfo ,pt.y,nInfo,nInfo,FALSE); m_staticCamInfo[i].MoveWindow(pt.x + nInfo ,pt.y,nImgWidth - nInfo *2 ,nInfo,FALSE); m_frameImg[i].MoveWindow(pt.x,pt.y + nInfo,nImgWidth,nImgHeight,FALSE); m_frameImg[i].ChangeRect(); m_chkWithScorll[i].MoveWindow(pt.x + nImgWidth,pt.y + nInfo + nImgHeight,nHScroll,nInfo,FALSE); m_ctrlScrollV[i].MoveWindow(pt.x + nImgWidth,pt.y + nInfo,nHScroll,nImgHeight,FALSE); m_ctrlScrollH[i].MoveWindow(pt.x,pt.y + nInfo + nImgHeight,nImgWidth,nInfo,FALSE); pt.x += nImgWidth + nHScroll; } // Short pt.x = OrgPt.x; pt.y = OrgPt.y + nImgHeight + nInfo + nHScroll + 10; for(i = 4; i < 8; i++) { m_btnLoad[i].MoveWindow(pt.x,pt.y,nInfo,nInfo,FALSE); m_btnSave[i].MoveWindow(pt.x + nImgWidth - nInfo ,pt.y,nInfo,nInfo,FALSE); m_staticCamInfo[i].MoveWindow(pt.x + nInfo ,pt.y,nImgWidth - nInfo *2 ,nInfo,FALSE); m_frameImg[i].MoveWindow(pt.x,pt.y + nInfo,nImgWidth,nImgHeight,FALSE); m_frameImg[i].ChangeRect(); m_chkWithScorll[i].MoveWindow(pt.x + nImgWidth,pt.y + nInfo + nImgHeight,nHScroll,nInfo,FALSE); m_ctrlScrollV[i].MoveWindow(pt.x + nImgWidth,pt.y + nInfo,nHScroll,nImgHeight,FALSE); m_ctrlScrollH[i].MoveWindow(pt.x,pt.y + nInfo + nImgHeight,nImgWidth,nInfo,FALSE); pt.x += nImgWidth + nHScroll; } break; } switch(nMode) { case 0: for(i = 0; i < 8; i++) { m_btnLoad[i].ShowWindow(SW_SHOW); m_btnSave[i].ShowWindow(SW_SHOW); m_staticCamInfo[i].ShowWindow(SW_SHOW); m_ctrlScrollV[i].ShowWindow(SW_SHOW); m_ctrlScrollH[i].ShowWindow(SW_SHOW); m_chkWithScorll[i].ShowWindow(SW_SHOW); m_frameImg[i].ShowWindow(SW_SHOW); } break; case 1: for(i = 4; i < 8; i++) { m_btnLoad[i].ShowWindow(SW_HIDE); m_btnSave[i].ShowWindow(SW_HIDE); m_staticCamInfo[i].ShowWindow(SW_HIDE); m_ctrlScrollV[i].ShowWindow(SW_HIDE); m_ctrlScrollH[i].ShowWindow(SW_HIDE); m_chkWithScorll[i].ShowWindow(SW_HIDE); m_frameImg[i].ShowWindow(SW_HIDE); } for(i = 0; i < 4; i++) { m_btnLoad[i].ShowWindow(SW_SHOW); m_btnSave[i].ShowWindow(SW_SHOW); m_staticCamInfo[i].ShowWindow(SW_SHOW); m_ctrlScrollV[i].ShowWindow(SW_SHOW); m_ctrlScrollH[i].ShowWindow(SW_SHOW); m_chkWithScorll[i].ShowWindow(SW_SHOW); m_frameImg[i].ShowWindow(SW_SHOW); } break; case 2: for(i = 0; i < 4; i++) { m_btnLoad[i].ShowWindow(SW_HIDE); m_btnSave[i].ShowWindow(SW_HIDE); m_staticCamInfo[i].ShowWindow(SW_HIDE); m_ctrlScrollV[i].ShowWindow(SW_HIDE); m_ctrlScrollH[i].ShowWindow(SW_HIDE); m_chkWithScorll[i].ShowWindow(SW_HIDE); m_frameImg[i].ShowWindow(SW_HIDE); } for(i = 4; i < 8; i++) { m_btnLoad[i].ShowWindow(SW_SHOW); m_btnSave[i].ShowWindow(SW_SHOW); m_staticCamInfo[i].ShowWindow(SW_SHOW); m_ctrlScrollV[i].ShowWindow(SW_SHOW); m_ctrlScrollH[i].ShowWindow(SW_SHOW); m_chkWithScorll[i].ShowWindow(SW_SHOW); m_frameImg[i].ShowWindow(SW_SHOW); } break; case 3: for(i = 0; i < 8; i++) { m_btnLoad[i].ShowWindow(SW_HIDE); m_btnSave[i].ShowWindow(SW_HIDE); m_staticCamInfo[i].ShowWindow(SW_HIDE); m_ctrlScrollV[i].ShowWindow(SW_HIDE); m_ctrlScrollH[i].ShowWindow(SW_HIDE); m_chkWithScorll[i].ShowWindow(SW_HIDE); m_frameImg[i].ShowWindow(SW_HIDE); } break; } //InitScrollInfo(-1,1); SetRedraw(TRUE); Invalidate(TRUE); } void CViewScanImage::InitScrollInfo(int nSide /*= -1*/,int nScrollPos /*= 0*/) { int i =0; SCROLLINFO scrollInfoV; SCROLLINFO scrollInfoH; int nPos_V; int nPos_H; scrollInfoV.cbSize = sizeof(SCROLLINFO); scrollInfoV.fMask = SIF_ALL; scrollInfoV.nMin = 1; scrollInfoV.nPos = 1; scrollInfoV.nTrackPos = 400; scrollInfoV.nMax = INT_MAX; scrollInfoH.cbSize = sizeof(SCROLLINFO); scrollInfoH.fMask = SIF_ALL; scrollInfoH.nMin = 1; scrollInfoH.nPos = 1; scrollInfoH.nTrackPos = 64; double dZoom = m_frameImg[0].GetZoomData(); scrollInfoV.nPage = m_frameImg[0].m_WndRect.Height(); scrollInfoH.nPage = (int)(m_frameImg[0].m_WndRect.Width() / dZoom); scrollInfoH.nMax = IMAGE_WIDTH; INS_EDGE_RESULT_INFO *pResInfo = NULL; if(nSide == -1) { for(i = 0 ; i < MAX_PANEL_SIDE * UPDN_TYPE; i++) { nSide = GetSideIdx(i); nPos_V = m_ctrlScrollV[i].GetScrollPos(); nPos_H = m_ctrlScrollH[i].GetScrollPos(); if(nScrollPos == 0) { nPos_V = 0; nPos_H = 0; } if(m_pGlassData != NULL) { pResInfo = m_pGlassData->GetEdgeResultInfo((DimensionDir)nSide); } if(pResInfo != NULL) { int nEndLIne = pResInfo->nGlassEndLine; if(nEndLIne <= 0) nEndLIne = pResInfo->nPreGlassEndLine; scrollInfoV.nMax = nEndLIne - pResInfo->nGlassStartLine + (int)(m_frameImg[i].m_WndRect.Height() * dZoom); } else { if(i%2) scrollInfoV.nMax = MAX_IMAGE_LINE_LONG - (int)(m_frameImg[i].m_WndRect.Height() / dZoom); else scrollInfoV.nMax = MAX_IMAGE_LINE_SHORT - (int)(m_frameImg[i].m_WndRect.Height() / dZoom); } if(m_pHardware == NULL) { if(i%2) scrollInfoV.nMax = CHKMIN(MAX_IMAGE_LINE_LONG - (int)(m_frameImg[i].m_WndRect.Height() / dZoom),scrollInfoV.nMax); else scrollInfoV.nMax = CHKMIN(MAX_IMAGE_LINE_SHORT - (int)(m_frameImg[i].m_WndRect.Height() / dZoom),scrollInfoV.nMax); } else { int iCam = m_pHardware->GetCameraIndexToDimension((DimensionDir)nSide); int nMaxLine = g_pBase->m_pMemFrameNo[iCam]*g_pBase->m_pFrameHeight[iCam]; scrollInfoV.nMax = CHKMIN(nMaxLine - int(m_frameImg[i].m_WndRect.Height() / dZoom),scrollInfoV.nMax); } m_ctrlScrollV[i].SetScrollInfo(&scrollInfoV); m_ctrlScrollV[i].SetScrollPos(nPos_V); m_ctrlScrollH[i].SetScrollInfo(&scrollInfoH); m_ctrlScrollH[i].SetScrollPos(nPos_H); } } else { int iView = GetViewIndex(nSide); if(m_pGlassData != NULL) { pResInfo = m_pGlassData->GetEdgeResultInfo((DimensionDir)nSide); } nPos_V = m_ctrlScrollV[iView].GetScrollPos(); nPos_H = m_ctrlScrollH[iView].GetScrollPos(); if(pResInfo != NULL) { int nEndLIne = pResInfo->nGlassEndLine; if(nEndLIne <= 0) nEndLIne = pResInfo->nPreGlassEndLine; scrollInfoV.nMax = nEndLIne - pResInfo->nGlassStartLine + m_frameImg[iView].m_WndRect.Height(); } if(m_pHardware == NULL) { if(i%2) scrollInfoV.nMax = CHKMIN(MAX_IMAGE_LINE_LONG - (int)(m_frameImg[iView].m_WndRect.Height() / dZoom),scrollInfoV.nMax); else scrollInfoV.nMax = CHKMIN(MAX_IMAGE_LINE_SHORT - (int)(m_frameImg[iView].m_WndRect.Height() / dZoom),scrollInfoV.nMax); } else { int iCam = m_pHardware->GetCameraIndexToDimension((DimensionDir)nSide); int nMaxLine = g_pBase->m_pMemFrameNo[iCam]*g_pBase->m_pFrameHeight[iCam]; scrollInfoV.nMax = CHKMIN(nMaxLine - int(m_frameImg[iView].m_WndRect.Height() / dZoom),scrollInfoV.nMax); } if(nScrollPos == 0) { nPos_V = 0; nPos_H = 0; } scrollInfoV.nPos = nPos_V; m_ctrlScrollV[iView].SetScrollInfo(&scrollInfoV); m_ctrlScrollV[iView].SetScrollPos(nPos_V); scrollInfoH.nPos = nPos_H; m_ctrlScrollH[iView].SetScrollInfo(&scrollInfoH); m_ctrlScrollH[iView].SetScrollPos(nPos_H); } } void CViewScanImage::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { int pos; int nScrolIndex = -1; int i,nSide =-1; for(i = 0; i < MAX_PANEL_SIDE * UPDN_TYPE ; i++) { if(pScrollBar->m_hWnd==m_ctrlScrollV[i].m_hWnd) { nScrolIndex = i; break; } } if(nScrolIndex != -1) { nSide = GetSideIdx(nScrolIndex); SCROLLINFO si; si.fMask=SIF_ALL; m_ctrlScrollV[nScrolIndex].GetScrollInfo(&si,SIF_ALL); switch(nSBCode) { case SB_LINEUP: si.nPos = si.nPos -1; break; case SB_LINEDOWN: si.nPos = si.nPos +1; break; case SB_PAGEUP: si.nPos-=si.nPage; break; case SB_PAGEDOWN: si.nPos+=si.nPage; break; case SB_THUMBTRACK: si.nPos = si.nTrackPos; break; } if(si.nPos>(int)(si.nMax-si.nMin -si.nPage+1)) si.nPos=si.nMax-si.nMin-si.nPage+1; if(si.nPosGetEdgeResultInfo((DimensionDir)nSide); } if(pResInfo != NULL) { m_frameImg[i].m_ptOrg.y = max(0,pos + pResInfo->nGlassStartLine - m_frameImg[i].m_WndRect.Height()/2); } else m_frameImg[i].m_ptOrg.y = max(0,pos - m_frameImg[i].m_WndRect.Height()/2); m_frameImg[i].SetSide(nSide); m_frameImg[i].SetImage(GetBufferPoint(i,m_frameImg[i].m_ptOrg.y)); m_frameImg[i].SetGlassData(m_pGlassData); m_frameImg[i].ViewUpdate(); } } else if(nScrolIndex == 1 || nScrolIndex == 5) { for(i = nScrolIndex -1; i < nScrolIndex +3; i++) { nSide = GetSideIdx(i); m_ctrlScrollV[i].SetScrollInfo(&si); if(m_pGlassData != NULL) { pResInfo = m_pGlassData->GetEdgeResultInfo((DimensionDir)nSide); } if(pResInfo != NULL) { m_frameImg[i].m_ptOrg.y = max(0,pos + pResInfo->nGlassStartLine - m_frameImg[i].m_WndRect.Height()/2); } else m_frameImg[i].m_ptOrg.y = max(0,pos - m_frameImg[i].m_WndRect.Height()/2); m_frameImg[i].SetSide(nSide); m_frameImg[i].SetGlassData(m_pGlassData); m_frameImg[i].SetImage(GetBufferPoint(i,m_frameImg[i].m_ptOrg.y)); m_frameImg[i].ViewUpdate(); } } else { m_ctrlScrollV[nScrolIndex].SetScrollInfo(&si); if(m_pGlassData != NULL) { pResInfo = m_pGlassData->GetEdgeResultInfo((DimensionDir)nSide); } if(pResInfo != NULL) { m_frameImg[nScrolIndex].m_ptOrg.y = max(0,pos + pResInfo->nGlassStartLine - m_frameImg[i].m_WndRect.Height()/2); } else m_frameImg[nScrolIndex].m_ptOrg.y = max(0,pos - m_frameImg[nScrolIndex].m_WndRect.Height()/2); m_frameImg[nScrolIndex].SetSide(nSide); m_frameImg[nScrolIndex].SetGlassData(m_pGlassData); m_frameImg[nScrolIndex].SetImage(GetBufferPoint(i,m_frameImg[nScrolIndex].m_ptOrg.y)); m_frameImg[nScrolIndex].ViewUpdate(); } } else { m_ctrlScrollV[nScrolIndex].SetScrollInfo(&si); if(m_pGlassData != NULL) { pResInfo = m_pGlassData->GetEdgeResultInfo((DimensionDir)nSide); } if(pResInfo != NULL) { m_frameImg[nScrolIndex].m_ptOrg.y = max(0,pos + pResInfo->nGlassStartLine - m_frameImg[i].m_WndRect.Height()/2); } else m_frameImg[nScrolIndex].m_ptOrg.y = max(0,pos - m_frameImg[nScrolIndex].m_WndRect.Height()/2); m_frameImg[nScrolIndex].SetSide(nSide); m_frameImg[nScrolIndex].SetGlassData(m_pGlassData); m_frameImg[nScrolIndex].SetImage(GetBufferPoint(nScrolIndex,m_frameImg[nScrolIndex].m_ptOrg.y)); m_frameImg[nScrolIndex].ViewUpdate(); } } CDialogEx::OnVScroll(nSBCode, nPos, pScrollBar); } void CViewScanImage::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº»°ªÀ» È£ÃâÇÕ´Ï´Ù. if(!pScrollBar) { return CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar); } int nScrolIndex = -1; int nSide = -1; //CString strTemp; //strTemp.Format("%d", (int)nPos); //theApp.SetStatusBarText(strTemp); int i =0; for(i = 0; i < MAX_PANEL_SIDE * UPDN_TYPE ; i++) { if(pScrollBar->m_hWnd==m_ctrlScrollH[i].m_hWnd) { nScrolIndex = i; break; } } if(nScrolIndex != -1) { nSide = GetSideIdx(nScrolIndex); SCROLLINFO si; si.fMask=SIF_ALL; m_ctrlScrollH[nScrolIndex].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.nPosm_hThread, 1000); if((::GetExitCodeThread(m_pManualProcess->m_hThread ,&dwExitCode))&& (dwExitCode == STILL_ACTIVE)) { ::TerminateThread(m_pManualProcess->m_hThread, dwExitCode); m_pManualProcess = NULL; } } m_nIndex = nIndex; m_nThreadCmd = nCmd; m_pManualProcess = AfxBeginThread(ManualProcessAll,this); return TRUE; } BOOL CViewScanImage::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) { int nPos = m_sliderZoom.GetPos(); if(zDelta > 0) m_sliderZoom.SetPos(nPos+1); else m_sliderZoom.SetPos(nPos-1); UpdateZoom(); return CDialogEx::OnMouseWheel(nFlags, zDelta, pt); } void CViewScanImage::SaveFullImageAll() { if(m_pGlassData == NULL || m_IV2M == NULL) return; int iView; CPoint ptStart; int nLength; const int nOneFrameSize = 50000; CString strPath,strLog; int iSide; int nTotalLength = 0; int nFrame = 0; INS_EDGE_RESULT_INFO *pResInfo=NULL; CGlassRecipe *pGlassRcp = m_pGlassData->GetGlassRecipe(); #if OFFLINE_KEY if (nullptr == pGlassRcp) return; #endif CString strRcpName = pGlassRcp->GetRecipeName(); CString strGlassID = g_pBase->m_strHPanelID; if(strGlassID.IsEmpty() == TRUE) { strGlassID = _T("Manual_ID"); } if(strRcpName.IsEmpty() == TRUE) { strRcpName = _T("TestRcp"); } strGlassID.Trim(_T(' ')); CTime time = CTime::GetCurrentTime(); CString strDate,strTime; strDate.Format(_T("%04d%02d%02d"),time.GetYear(),time.GetMonth(),time.GetDay()); strTime.Format(_T("%02d%02d%02d"),time.GetHour(),time.GetMinute(),time.GetSecond()); for(iView=0;iViewGetCameraIndexToDimension((DimensionDir)iSide); int iScan = m_pHardware->GetScanToDimension((DimensionDir)iSide); CCameraSettings *pCamera = m_pHardware->GetCameraSettings(iCam,iScan); if(pCamera == NULL) return; nTotalLength = (pCamera->m_nGrabFrameCount-1)*pCamera->m_FrameSize.cy; //nFrame = nTotalLength/nOneFrameSize; ptStart.x = 0; ptStart.y = max(0,0); int nMaxSize = (pCamera->m_nGrabFrameCount-1)*pCamera->m_FrameSize.cy; INS_EDGE_RESULT_INFO *pEdgeInfo = m_pGlassData->GetEdgeResultInfo((DimensionDir)iSide); if(pEdgeInfo != NULL) { ptStart.y = max(0,pEdgeInfo->nGlassStartLine-1000); nTotalLength = min((int)((pEdgeInfo->nPreGlassEndLine + 1000) - ptStart.y),nMaxSize); } if(nTotalLength < 10000) nTotalLength = nMaxSize; nFrame = nTotalLength/nOneFrameSize; if(ptStart.y < 0) ptStart.y = 0; for(int i = 0; i < nFrame ; i++) { nLength = nOneFrameSize; if(ptStart.y+nLength >= nMaxSize) continue; strPath.Format(_T("%sDebugFullImage\\%s\\%s\\%s\\%s\\%s__%s_%d"),PATH_INSPECTION_DATA,strDate,strRcpName,strGlassID,strTime,strGlassID,PANEL_SIDE[iSide],i); m_IV2M->IV2M_SaveFullImage(strPath,iSide,ptStart,nLength); g_pLog->DisplayMessage(_T("%s %d Save Completed : %s"),PANEL_SIDE[iSide],i,strPath); ptStart.y += nLength; } nLength = nTotalLength%nOneFrameSize; if(nLength > 10) { if(ptStart.y+nLength < nMaxSize) { strPath.Format(_T("%sDebugFullImage\\%s\\%s\\%s\\%s\\%s__%s_%d"),PATH_INSPECTION_DATA,strDate,strRcpName,strGlassID,strTime,strGlassID,PANEL_SIDE[iSide],nFrame); m_IV2M->IV2M_SaveFullImage(strPath,iSide,ptStart,nLength); } } g_pLog->DisplayMessage(_T("%s %d Save Completed : %s"),PANEL_SIDE[iSide],nFrame,strPath); } } void CViewScanImage::SaveFullImage(int nViewIndex) { CPoint ptStart; int nLength; const int nOneFrameSize = 50000; CString strPath,strLog; int iSide = GetSideIdx(nViewIndex); int nTotalLength = 0; int nFrame = 0; if(m_pGlassData == NULL || m_IV2M == NULL) return; CGlassRecipe *pGlassRcp = m_pGlassData->GetGlassRecipe(); CString strRcpName = pGlassRcp->GetRecipeName(); int iCam = m_pHardware->GetCameraIndexToDimension((DimensionDir)iSide); int iScan = m_pHardware->GetScanToDimension((DimensionDir)iSide); CCameraSettings *pCamera = m_pHardware->GetCameraSettings(iCam,iScan); if(pCamera == NULL) return; nTotalLength = pCamera->m_nGrabFrameCount*pCamera->m_FrameSize.cy; nFrame = nTotalLength/nOneFrameSize; ptStart.x = 0; ptStart.y = max(0,0); INS_EDGE_RESULT_INFO *pEdgeInfo = m_pGlassData->GetEdgeResultInfo((DimensionDir)iSide); if(pEdgeInfo != NULL) { ptStart.y = max(0,pEdgeInfo->nGlassStartLine-1000); nTotalLength = min((pEdgeInfo->nGlassEndLine + 1000) - ptStart.y,pCamera->m_nGrabFrameCount*pCamera->m_FrameSize.cy); } CString strGlassID = g_pBase->m_strHPanelID; if(strGlassID.IsEmpty() == TRUE) { strGlassID = _T("Manual_ID"); } if(strRcpName.IsEmpty() == TRUE) { strRcpName = _T("TestRcp"); } strGlassID.Trim(_T(' ')); CTime time = CTime::GetCurrentTime(); CString strDate,strTime; strDate.Format(_T("%04d%02d%02d"),time.GetYear(),time.GetMonth(),time.GetDay()); strTime.Format(_T("%02d%02d%02d"),time.GetHour(),time.GetMinute(),time.GetSecond()); for(int i = 0; i < nFrame ; i++) { nLength = nOneFrameSize; strPath.Format(_T("%sDebugFullImage\\%s\\%s\\%s\\%s\\%s__%s_%d"),PATH_INSPECTION_DATA,strDate,strRcpName,strGlassID,strTime,strGlassID,PANEL_SIDE[iSide],i); m_IV2M->IV2M_SaveFullImage(strPath,iSide,ptStart,nLength); ptStart.y += nLength; g_pLog->DisplayMessage(_T("%s %d Save Completed : %s"),PANEL_SIDE[iSide],i,strPath); } nLength = nTotalLength%nOneFrameSize; if(nLength) { strPath.Format(_T("%sDebugFullImage\\%s\\%s\\%s\\%s\\%s__%s_%d"),PATH_INSPECTION_DATA,strDate,strRcpName,strGlassID,strTime,strGlassID,PANEL_SIDE[iSide],nFrame); m_IV2M->IV2M_SaveFullImage(strPath,iSide,ptStart,nLength); g_pLog->DisplayMessage(_T("%s %d Save Completed : %s"),PANEL_SIDE[iSide],nFrame,strPath); } } UINT CViewScanImage::ManualProcessAll(LPVOID pParam) { CViewScanImage *pDlg = (CViewScanImage*)pParam; int i =0; if(pDlg->m_nThreadCmd == M_CMD_PROC_ALL_START || pDlg->m_nThreadCmd == M_CMD_PROC_SHORT_START || pDlg->m_nThreadCmd == M_CMD_PROC_LONG_START) { pDlg->m_IV2M->IV2M_InspectionProcessAll(pDlg->m_nThreadCmd); } else if(pDlg->m_nThreadCmd == M_CMD_IMG_LOAD_ALL) { if (pDlg->m_IV2M == NULL) { return 0; } pDlg->m_IV2M->IV2M_LoadImageFullFile(-1,pDlg->m_pGlassData, [&] (BYTE iSide) { int iView = pDlg->GetViewIndex(iSide); pDlg->InitScrollInfo(iSide,0); pDlg->m_frameImg[iView].Invalidate(FALSE); pDlg->m_frameImg[iView].Invalidate(); }); //CString strFolderPath = _T("D:\\±¸·Ý\\¹â¼ì»ú\\EI¡¢Rcut\\RCUT\\ͼƬ\\n8_NG"); //pDlg->m_IV2M->IV2M_LoadImageFromFolder(-1, strFolderPath, pDlg->m_pGlassData, [&](BYTE iSide) { // int iView = pDlg->GetViewIndex(iSide); // pDlg->InitScrollInfo(iSide, 0); // pDlg->m_frameImg[iView].Invalidate(FALSE); // pDlg->m_frameImg[iView].Invalidate(); //}); } else if(pDlg->m_nThreadCmd == M_CMD_IMG_SAVE_ALL) { pDlg->SaveFullImageAll(); } else if(pDlg->m_nThreadCmd == M_CMD_IMG_LOAD_SIDE) { pDlg->m_IV2M->IV2M_LoadImageFullFile(pDlg->GetSideIdx(pDlg->m_nIndex),pDlg->m_pGlassData, [&] (BYTE iSide) { int iView = pDlg->GetViewIndex(iSide); pDlg->InitScrollInfo(iSide,0); pDlg->m_frameImg[iView].Invalidate(FALSE); pDlg->m_frameImg[iView].Invalidate(); }); } else if(pDlg->m_nThreadCmd == M_CMD_IMG_SAVE_SIDE) { pDlg->SaveFullImage(pDlg->m_nIndex); } else; return 0; } void CViewScanImage::OnTimer(UINT_PTR nIDEvent) { #if FALSE if(nIDEvent == 1) { } #endif CDialogEx::OnTimer(nIDEvent); } void CViewScanImage::OnNMCustomdrawSliderZoom(NMHDR *pNMHDR, LRESULT *pResult) { LPNMCUSTOMDRAW pNMCD = reinterpret_cast(pNMHDR); // TODO: Add your control notification handler code here CString strTmp; int nPos = m_sliderZoom.GetPos(); if(nPos > 4) m_dZoom = 1 + (nPos - 4) * 0.25; // m_dZoom = 1 + (nPos - 4) * 0.2; else if(nPos < 4) m_dZoom = 1 /double(5-nPos); else m_dZoom = 1; strTmp.Format(_T("X %.2f"),m_dZoom); GetDlgItem(IDC_ST_ZOOM)->SetWindowText(strTmp); *pResult = 0; } void CViewScanImage::OnNMReleasedcaptureSliderZoom(NMHDR *pNMHDR, LRESULT *pResult) { UpdateZoom(); *pResult = 0; } void CViewScanImage::OnBnClickedBtnInitDisplay() { for(int i = 0; i <8 ; i++) { InitScrollInfo(i,0); int nSide = GetSideIdx(i); m_frameImg[i].SetSide(nSide); m_frameImg[i].SetImage(GetBufferPoint(i,0)); m_frameImg[i].ViewUpdate(); } if(m_IV2M != NULL) { m_IV2M->IV2M_InitView(VIEW_SCANIMAGE); } } void CViewScanImage::OnBnClickedBtnProc() { switch(m_nShowSelect) { case 0: ManualThreadStart(M_CMD_PROC_ALL_START ); break; case 1: ManualThreadStart(M_CMD_PROC_LONG_START ); break; case 2: ManualThreadStart(M_CMD_PROC_SHORT_START); break; } } void CViewScanImage::OnBnClickedCheckAutoSize() { BOOL bCheck = ((CButton*)GetDlgItem(IDC_CHECK_AUTO_SIZE))->GetCheck(); for(int i = 0 ; i < 8 ; i++) { if(bCheck) m_frameImg[i].SetMode(MODE_AUTO_MEASURE); else m_frameImg[i].ResetMode(MODE_AUTO_MEASURE); } }