EdgeInspector_App/View/ViewMain_ScanImage.cpp
@@ -1,4 +1,4 @@
// ViewScanImage.cpp : 备泅 颇老涝聪促.
// ViewScanImage.cpp : 备泅 颇老涝聪促.
//
#include "stdafx.h"
@@ -10,6 +10,7 @@
enum TYPE_MANUAL_CMD
{
   M_CMD_PROC_RIP_START = 0,
   M_CMD_PROC_SHORT_START,
   M_CMD_PROC_LONG_START,
   M_CMD_PROC_ALL_START,
@@ -17,10 +18,9 @@
   M_CMD_IMG_SAVE_ALL,
   M_CMD_IMG_LOAD_SIDE,
   M_CMD_IMG_SAVE_SIDE,
};
// CViewScanImage 措拳 惑磊涝聪促.
// CViewScanImage 措拳 惑磊涝聪促.
IMPLEMENT_DYNAMIC(CViewMain_ScanImage, CDialogEx)
@@ -43,69 +43,97 @@
void CViewMain_ScanImage::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_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_V_9, m_ctrlScrollV[8]);
   DDX_Control(pDX, IDC_SCROLLBAR_V_10, m_ctrlScrollV[9]);
   DDX_Control(pDX, IDC_SCROLLBAR_V_11, m_ctrlScrollV[10]);
   DDX_Control(pDX, IDC_SCROLLBAR_V_12, m_ctrlScrollV[11]);
   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_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_SCROLLBAR_H_9, m_ctrlScrollH[8]);
   DDX_Control(pDX, IDC_SCROLLBAR_H_10, m_ctrlScrollH[9]);
   DDX_Control(pDX, IDC_SCROLLBAR_H_11, m_ctrlScrollH[10]);
   DDX_Control(pDX, IDC_SCROLLBAR_H_12, m_ctrlScrollH[11]);
   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_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_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_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_BTN_LOAD9, m_btnLoad[8]);
   DDX_Control(pDX, IDC_BTN_LOAD10, m_btnLoad[9]);
   DDX_Control(pDX, IDC_BTN_LOAD11, m_btnLoad[10]);
   DDX_Control(pDX, IDC_BTN_LOAD12, m_btnLoad[11]);
   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_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_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_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_BTN_SAVE9, m_btnSave[8]);
   DDX_Control(pDX, IDC_BTN_SAVE10, m_btnSave[9]);
   DDX_Control(pDX, IDC_BTN_SAVE11, m_btnSave[10]);
   DDX_Control(pDX, IDC_BTN_SAVE12, m_btnSave[11]);
   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_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_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_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_UPDN_WIDTH9, m_chkWithScorll[8]);
   DDX_Control(pDX, IDC_UPDN_WIDTH10, m_chkWithScorll[9]);
   DDX_Control(pDX, IDC_UPDN_WIDTH11, m_chkWithScorll[10]);
   DDX_Control(pDX, IDC_UPDN_WIDTH12, m_chkWithScorll[11]);
   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_STATIC_CAM_INFO9, m_staticCamInfo[8]);
   DDX_Control(pDX, IDC_STATIC_CAM_INFO10, m_staticCamInfo[9]);
   DDX_Control(pDX, IDC_STATIC_CAM_INFO11, m_staticCamInfo[10]);
   DDX_Control(pDX, IDC_STATIC_CAM_INFO12, m_staticCamInfo[11]);
   DDX_Control(pDX, IDC_SLIDER_ZOOM, m_sliderZoom);
@@ -116,7 +144,10 @@
BEGIN_MESSAGE_MAP(CViewMain_ScanImage, CDialogEx)
   ON_WM_VSCROLL()
   ON_WM_HSCROLL()
   ON_WM_MOUSEWHEEL()
   ON_WM_SHOWWINDOW()
   ON_WM_TIMER()
   ON_WM_PAINT()
   ON_BN_CLICKED(IDC_BTN_LOAD1, &CViewMain_ScanImage::OnBnClickedBtnLoad1)
   ON_BN_CLICKED(IDC_BTN_SAVE1, &CViewMain_ScanImage::OnBnClickedBtnSave1)
   ON_BN_CLICKED(IDC_BTN_LOAD2, &CViewMain_ScanImage::OnBnClickedBtnLoad2)
@@ -125,34 +156,38 @@
   ON_BN_CLICKED(IDC_BTN_SAVE3, &CViewMain_ScanImage::OnBnClickedBtnSave3)
   ON_BN_CLICKED(IDC_BTN_LOAD4, &CViewMain_ScanImage::OnBnClickedBtnLoad4)
   ON_BN_CLICKED(IDC_BTN_SAVE4, &CViewMain_ScanImage::OnBnClickedBtnSave4)
   ON_BN_CLICKED(IDC_BTN_LOAD5, &CViewMain_ScanImage::OnBnClickedBtnLoad5)
   ON_BN_CLICKED(IDC_BTN_SAVE5, &CViewMain_ScanImage::OnBnClickedBtnSave5)
   ON_BN_CLICKED(IDC_BTN_LOAD6, &CViewMain_ScanImage::OnBnClickedBtnLoad6)
   ON_BN_CLICKED(IDC_BTN_SAVE6, &CViewMain_ScanImage::OnBnClickedBtnSave6)
   ON_BN_CLICKED(IDC_BTN_LOAD7, &CViewMain_ScanImage::OnBnClickedBtnLoad7)
   ON_BN_CLICKED(IDC_BTN_SAVE7, &CViewMain_ScanImage::OnBnClickedBtnSave7)
   ON_BN_CLICKED(IDC_BTN_LOAD8, &CViewMain_ScanImage::OnBnClickedBtnLoad8)
   ON_BN_CLICKED(IDC_BTN_SAVE8, &CViewMain_ScanImage::OnBnClickedBtnSave8)
   ON_BN_CLICKED(IDC_BTN_LOAD9, &CViewMain_ScanImage::OnBnClickedBtnLoad9)
   ON_BN_CLICKED(IDC_BTN_SAVE9, &CViewMain_ScanImage::OnBnClickedBtnSave9)
   ON_BN_CLICKED(IDC_BTN_LOAD10, &CViewMain_ScanImage::OnBnClickedBtnLoad10)
   ON_BN_CLICKED(IDC_BTN_SAVE10, &CViewMain_ScanImage::OnBnClickedBtnSave10)
   ON_BN_CLICKED(IDC_BTN_LOAD11, &CViewMain_ScanImage::OnBnClickedBtnLoad11)
   ON_BN_CLICKED(IDC_BTN_SAVE11, &CViewMain_ScanImage::OnBnClickedBtnSave11)
   ON_BN_CLICKED(IDC_BTN_LOAD12, &CViewMain_ScanImage::OnBnClickedBtnLoad12)
   ON_BN_CLICKED(IDC_BTN_SAVE12, &CViewMain_ScanImage::OnBnClickedBtnSave12)
   ON_BN_CLICKED(IDC_UPDN_WIDTH1, &CViewMain_ScanImage::OnBnClickedUpdnWidth1)
   ON_BN_CLICKED(IDC_UPDN_WIDTH2, &CViewMain_ScanImage::OnBnClickedUpdnWidth2)
   ON_BN_CLICKED(IDC_UPDN_WIDTH3, &CViewMain_ScanImage::OnBnClickedUpdnWidth3)
   ON_BN_CLICKED(IDC_UPDN_WIDTH4, &CViewMain_ScanImage::OnBnClickedUpdnWidth4)
   ON_BN_CLICKED(IDC_UPDN_WIDTH6, &CViewMain_ScanImage::OnBnClickedUpdnWidth6)
   ON_BN_CLICKED(IDC_UPDN_WIDTH5, &CViewMain_ScanImage::OnBnClickedUpdnWidth5)
   ON_BN_CLICKED(IDC_UPDN_WIDTH7, &CViewMain_ScanImage::OnBnClickedUpdnWidth7)
   ON_BN_CLICKED(IDC_UPDN_WIDTH8, &CViewMain_ScanImage::OnBnClickedUpdnWidth8)
   ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_ZOOM, &CViewMain_ScanImage::OnNMCustomdrawSliderZoom)
   ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_ZOOM, &CViewMain_ScanImage::OnNMReleasedcaptureSliderZoom)
   ON_WM_MOUSEWHEEL()
   ON_BN_CLICKED(IDC_UPDN_WIDTH1,      &CViewMain_ScanImage::OnBnClickedUpdnWidth1)
   ON_BN_CLICKED(IDC_UPDN_WIDTH2,      &CViewMain_ScanImage::OnBnClickedUpdnWidth2)
   ON_BN_CLICKED(IDC_UPDN_WIDTH3,      &CViewMain_ScanImage::OnBnClickedUpdnWidth3)
   ON_BN_CLICKED(IDC_UPDN_WIDTH4,      &CViewMain_ScanImage::OnBnClickedUpdnWidth4)
   ON_BN_CLICKED(IDC_UPDN_WIDTH6,      &CViewMain_ScanImage::OnBnClickedUpdnWidth6)
   ON_BN_CLICKED(IDC_UPDN_WIDTH5,      &CViewMain_ScanImage::OnBnClickedUpdnWidth5)
   ON_BN_CLICKED(IDC_UPDN_WIDTH7,      &CViewMain_ScanImage::OnBnClickedUpdnWidth7)
   ON_BN_CLICKED(IDC_UPDN_WIDTH8,      &CViewMain_ScanImage::OnBnClickedUpdnWidth8)
   ON_BN_CLICKED(IDC_BTN_LOAD5,      &CViewMain_ScanImage::OnBnClickedBtnLoad5)
   ON_BN_CLICKED(IDC_BTN_SAVE5,      &CViewMain_ScanImage::OnBnClickedBtnSave5)
   ON_BN_CLICKED(IDC_BTN_LOAD6,      &CViewMain_ScanImage::OnBnClickedBtnLoad6)
   ON_BN_CLICKED(IDC_BTN_SAVE6,      &CViewMain_ScanImage::OnBnClickedBtnSave6)
   ON_BN_CLICKED(IDC_BTN_LOAD7,      &CViewMain_ScanImage::OnBnClickedBtnLoad7)
   ON_BN_CLICKED(IDC_BTN_SAVE7,      &CViewMain_ScanImage::OnBnClickedBtnSave7)
   ON_BN_CLICKED(IDC_BTN_LOAD8,      &CViewMain_ScanImage::OnBnClickedBtnLoad8)
   ON_BN_CLICKED(IDC_BTN_SAVE8,      &CViewMain_ScanImage::OnBnClickedBtnSave8)
   ON_BN_CLICKED(IDC_CHECK_AUTO_DEFECT_VIEW, &CViewMain_ScanImage::OnBnClickedCheckAutoDefectView)
   ON_WM_SHOWWINDOW()
   ON_WM_TIMER()
   ON_WM_PAINT()
    ON_MESSAGE(WM_POCESS_STATUS, OnProcessStatus)
    ON_MESSAGE(WM_POCESS_STATUS, &CViewMain_ScanImage::OnProcessStatus)
END_MESSAGE_MAP()
BEGIN_EVENTSINK_MAP(CViewMain_ScanImage, CDialogEx)
   ON_EVENT(CViewMain_ScanImage, IDC_BTN_IMG_RIP, DISPID_CLICK, CViewMain_ScanImage::OnBnClickedBtnImgRip, VTS_NONE)
   ON_EVENT(CViewMain_ScanImage, IDC_BTN_IMG_SHORT, DISPID_CLICK, CViewMain_ScanImage::OnBnClickedBtnImgShort, VTS_NONE)
   ON_EVENT(CViewMain_ScanImage, IDC_BTN_IMG_LONG, DISPID_CLICK, CViewMain_ScanImage::OnBnClickedBtnImgLong, VTS_NONE)
   ON_EVENT(CViewMain_ScanImage, IDC_BTN_IMG_BOTH, DISPID_CLICK, CViewMain_ScanImage::OnBnClickedBtnImgBoth, VTS_NONE)
@@ -163,7 +198,7 @@
END_EVENTSINK_MAP()
// CViewScanImage 皋矫瘤 贸府扁涝聪促.
// CViewScanImage 皋矫瘤 贸府扁涝聪促.
BOOL CViewMain_ScanImage::OnInitDialog()
{
   UpdateData(FALSE);
@@ -172,8 +207,7 @@
   m_sliderZoom.SetPos(0);
   int i;
   for( i = 0; i < MAX_PANEL_SIDE  * UPDN_TYPE;i++)
   {
   for (i = 0; i < MAX_PANEL_SIDE * UPDN_TYPE; i++) {
      m_btnLoad[i].m_bTransparent = TRUE;
      m_btnSave[i].m_bTransparent = TRUE;
@@ -186,15 +220,17 @@
   }
   int nSide;
   CRect rc2(0,0,10,10);
   for(i = 0 ; i < MAX_PANEL_SIDE * UPDN_TYPE; i++)
   {
   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].SetSideIdx(nSide);
      m_frameImg[i].SetImageBuffer(NULL, IMAGE_WIDTH, IMAGE_HEIGHT, MAX_FRAM_COUNT);
      m_frameImg[i].SetSideIdx(0);
      if (i < 2 * MAX_PANEL_SIDE) {
         m_frameImg[i].SetImageBuffer(NULL, IMAGE_WIDTH, IMAGE_HEIGHT, MAX_FRAM_COUNT);
      }
      else {
         m_frameImg[i].SetImageBuffer(NULL, IMAGE_WIDTH / 2, IMAGE_HEIGHT, MAX_FRAM_COUNT);
      }
      m_frameImg[i].SetGlassData(m_pGlassData);
      m_frameImg[i].Create(NULL,NULL,WS_VISIBLE | WS_CHILD,rc2,this,0);
      m_frameImg[i].SetImageBuffer(GetBufferPoint(i,0));
@@ -203,11 +239,10 @@
   m_bInitDlg = TRUE;
   ChangeCtrPos(3);
   m_nShowSelect = 0;
   ChangeCtrPos(m_nShowSelect);
   SetZoom(0.2);
   m_nShowSelect = 0;
   ((CButton*)GetDlgItem(IDC_CHECK_AUTO_DEFECT_VIEW))->SetCheck(TRUE);
@@ -216,14 +251,11 @@
BOOL CViewMain_ScanImage::PreTranslateMessage(MSG* pMsg)
{
   if( pMsg->message == WM_KEYDOWN )
   {
      if(pMsg->wParam == VK_RETURN
         || pMsg->wParam == VK_ESCAPE )
      {
   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 TRUE;
      }
   }
@@ -232,12 +264,10 @@
void CViewMain_ScanImage::OnShowWindow(BOOL bShow, UINT nStatus)
{
   if(bShow == TRUE)
   {
   if(bShow == TRUE) {
      int nSide;      
      CString      strTitle;
      for(int i = 0 ; i < MAX_PANEL_SIDE * UPDN_TYPE; i++)
      {
      CString   strTitle;
      for(int i = 0 ; i < MAX_PANEL_SIDE * UPDN_TYPE; i++) {
         nSide = GetSideIdx(i);
         m_frameImg[i].SetSideIdx(nSide);         
         m_frameImg[i].SetGlassData(m_pGlassData);
@@ -246,28 +276,21 @@
         m_frameImg[i].SetImageBuffer(GetBufferPoint(i,ptDisplayPos.y));
         m_frameImg[i].Invalidate();
         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);
            }
            if(pCamera != NULL)
            {
         if(m_pHardware != NULL) {
            CCameraSettings *pCamera = GetCameraSettingsByViewIndex(i);
            if(pCamera != NULL) {
               double dPixelSizeX = pCamera->m_dConvResolution[0];
               double dPixelSizeY = pCamera->m_dScanResolution[0];
               m_frameImg[i].SetPixelSize(dPixelSizeX, dPixelSizeY);
               strTitle.Format(_T("BORD[%d]  CHANNEL[%d]"), pCamera->m_iCamera, 0);
               m_staticCamInfo[i].SetWindowText(strTitle);
            }
            strTitle.Format(_T("BORD[%d]  CHANNEL[%d]"),pCamera->m_iCamera, 0);
            m_staticCamInfo[i].SetWindowText(strTitle);
         }
         }
         if (m_pGlassData != nullptr) {
            m_frameImg[i].SetRecipe(m_pGlassData->GetGlassRecipe());
         }
      }
      m_bInitDlg = TRUE;
@@ -281,11 +304,9 @@
void CViewMain_ScanImage::OnPaint()
{
   CPaintDC dc(this); // device context for painting
}
void    CViewMain_ScanImage::SetZoom(double dZoom)
void CViewMain_ScanImage::SetZoom(double dZoom)
{
   m_dZoom = dZoom;
   UpdateZoom();
@@ -299,12 +320,13 @@
BYTE* CViewMain_ScanImage::GetBufferPoint(int nViewIndex,int nPos /*= 0*/)
{
   BYTE *add = NULL;
   int nIdx_Side    = GetSideIdx(nViewIndex);
   int nIdx_Side = GetSideIdx(nViewIndex);
   LPBYTE plpBuf = NULL;
   if(m_IV2M != NULL)
      plpBuf = m_IV2M->IV2M_GetGrabBufferByDimension((DimensionDir)nIdx_Side,nPos);
   if (m_IV2M != NULL) {
      plpBuf = m_IV2M->IV2M_GetGrabBufferByDimension((DimensionDir)nIdx_Side, nPos);
   }
   return plpBuf;
}
@@ -313,8 +335,7 @@
   PROG_MSG MsgJob = *((PROG_MSG*)wParam);   
   int nIndex = GetViewIndex(MsgJob.nSide);
   if(MsgJob.nState == 2)
   {
   if(MsgJob.nState == 2) {
      InitScrollInfo(MsgJob.nSide,1);
      m_ctrlScrollV[nIndex].EnableWindow(TRUE);
@@ -338,23 +359,7 @@
      m_frameImg[nIndex].SetGlassData(m_pGlassData);
      m_frameImg[nIndex].Invalidate();
   }
   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);
   else {
      CPoint ptOrg = m_frameImg[nIndex].GetDisplayPos();
      ptOrg.y = MsgJob.nDispLine;
@@ -368,7 +373,7 @@
void CViewMain_ScanImage::SetupImageSave()
{
   ManualThreadStart(M_CMD_IMG_SAVE_ALL,-1);
   ManualThreadStart(M_CMD_IMG_SAVE_ALL, -1);
}
void CViewMain_ScanImage::SetRecipe(CHardwareSettings *pHW)
@@ -378,10 +383,9 @@
void CViewMain_ScanImage::ResetView()
{
   for(int i = 0; i <8 ; i++)
   {
   for(int i = 0; i < MAX_PANEL_SIDE * UPDN_TYPE; i++) {
      m_ctrlScrollV[i].EnableWindow(FALSE);
   }
   }
}
void CViewMain_ScanImage::ViewRefresh(PROG_MSG ProcMsg)
@@ -403,6 +407,10 @@
   case 5: nID = DIMENSION_D + MAX_PANEL_SIDE;   break;
   case 6: nID = DIMENSION_B;               break;
   case 7: nID = DIMENSION_B + MAX_PANEL_SIDE;   break;
   case 8: nID = DIMENSION_A_RIP;            break;
   case 9: nID = DIMENSION_B_RIP;            break;
   case 10: nID = DIMENSION_C_RIP;            break;
   case 11: nID = DIMENSION_D_RIP;            break;
   default:
      AfxMessageBox(_T("CViewImage::GetPanelID(int nViewIndex) call Error"));
      break;
@@ -413,21 +421,18 @@
void CViewMain_ScanImage::ChangeCtrPos(int nMode)
{
   // 0: Long & Short, 1: Long only, 2: Short only, 3: Rip
   m_nShowSelect = nMode;
   int nInfo         = 20;
   int nHScroll      = 20;
   int nImgWidth      = 450;
   int nImgHeight      = 350;
   const int nInfo = 20;
   const int nHScroll = 20;
   const int nImgWidth = 450;
   int nImgHeight = 350;
   int i = 0;
   CPoint OrgPt(10,5),pt;
   pt = OrgPt;
   CPoint OrgPt(10, 5), pt = OrgPt;
   SetRedraw(FALSE);
   for(i = 0; i < 8 ; i ++)
   {
   for (int i = 0; i < MAX_PANEL_SIDE * UPDN_TYPE; i++) {
      m_btnLoad[i].SetRedraw(FALSE);
      m_btnSave[i].SetRedraw(FALSE);
      m_staticCamInfo[i].SetRedraw(FALSE);
@@ -437,219 +442,42 @@
      m_frameImg[i].SetRedraw(FALSE);
   }
   switch(nMode)
   switch (nMode)
   {
   case 0:
   case 0: // Long & Short
      pt = OrgPt;
      LayoutCameraGroup(0, 4, pt, nImgWidth, nImgHeight, nInfo, nHScroll); // Long
      // 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);
         CRect rtWnd;
         m_frameImg[i].GetClientRect(rtWnd);
         m_frameImg[i].SetWndRect(rtWnd);
         // 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);
         CRect rtWnd;
         m_frameImg[i].GetClientRect(rtWnd);
         m_frameImg[i].SetWndRect(rtWnd);
         //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;
      }
      pt.y = OrgPt.y + nImgHeight + nInfo + nHScroll + 10;
      LayoutCameraGroup(4, 4, pt, nImgWidth, nImgHeight, nInfo, nHScroll); // Short
      ShowCameraGroup(0, 8, TRUE);
      break;
   case 1: // long
      pt.x = OrgPt.x;
      pt.y = OrgPt.y;
   case 1: // Long only, large
      nImgHeight = 750;
      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);
         CRect rtWnd;
         m_frameImg[i].GetClientRect(rtWnd);
         m_frameImg[i].SetWndRect(rtWnd);
         //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;
      }
      pt = OrgPt;
      LayoutCameraGroup(0, 4, pt, nImgWidth, nImgHeight, nInfo, nHScroll);
      ShowCameraGroup(0, 4, TRUE);
      ShowCameraGroup(4, 4, FALSE);
      break;
   case 2:// Short
      pt.x = OrgPt.x;
      pt.y = OrgPt.y;
   case 2: // Short only, large
      nImgHeight = 750;
      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);
         CRect rtWnd;
         m_frameImg[i].GetClientRect(rtWnd);
         m_frameImg[i].SetWndRect(rtWnd);
         // 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;
      }
      pt = OrgPt;
      LayoutCameraGroup(4, 4, pt, nImgWidth, nImgHeight, nInfo, nHScroll);
      ShowCameraGroup(0, 4, FALSE);
      ShowCameraGroup(4, 4, TRUE);
      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);
         CRect rtWnd;
         m_frameImg[i].GetClientRect(rtWnd);
         m_frameImg[i].SetWndRect(rtWnd);
         //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);
         CRect rtWnd;
         m_frameImg[i].GetClientRect(rtWnd);
         m_frameImg[i].SetWndRect(rtWnd);
         //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;
      }
   case 3: // Rip (cam 8~11)
      nImgHeight = 750;
      pt = OrgPt;
      LayoutCameraGroup(8, 4, pt, nImgWidth, nImgHeight, nInfo, nHScroll);
      ShowCameraGroup(8, 4, TRUE);
      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);
}
@@ -678,7 +506,6 @@
   scrollInfoH.nTrackPos   = 64;
   
   double dZoom = m_frameImg[0].GetZoom();
   scrollInfoV.nPage   = m_frameImg[0].GetWndRect().Height();
   scrollInfoH.nPage   = (int)(m_frameImg[0].GetWndRect().Width() / dZoom);   
@@ -970,7 +797,7 @@
void CViewMain_ScanImage::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
   // TODO: 咯扁俊 皋矫瘤 贸府扁 内靛甫 眠啊 棺/肚绰 扁夯蔼阑 龋免钦聪促.
   // TODO: 咯扁俊 皋矫瘤 贸府扁 内靛甫 眠啊 棺/肚绰 扁夯蔼阑 龋免钦聪促.
   if(!pScrollBar)
   {
      return CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
@@ -1050,7 +877,10 @@
   case 5: nID = DIMENSION_D + MAX_PANEL_SIDE;   break;
   case 6: nID = DIMENSION_B;               break;
   case 7: nID = DIMENSION_B + MAX_PANEL_SIDE;   break;
   case 8: nID = DIMENSION_A_RIP;            break;
   case 9: nID = DIMENSION_B_RIP;            break;
   case 10: nID = DIMENSION_C_RIP;            break;
   case 11: nID = DIMENSION_D_RIP;            break;
   default:
      AfxMessageBox(_T("CViewImage::GetViewIndex(int nSide) call Error"));
      break;
@@ -1069,39 +899,49 @@
   }   
}
void CViewMain_ScanImage::OnBnClickedBtnImgBoth()   {ChangeCtrPos(0);}
void CViewMain_ScanImage::OnBnClickedBtnImgShort()   {ChangeCtrPos(2);}
void CViewMain_ScanImage::OnBnClickedBtnImgLong()   {ChangeCtrPos(1);}
void CViewMain_ScanImage::OnBnClickedBtnImgRip() { ChangeCtrPos(3); }
void CViewMain_ScanImage::OnBnClickedBtnImgShort() { ChangeCtrPos(2); }
void CViewMain_ScanImage::OnBnClickedBtnImgLong() { ChangeCtrPos(1); }
void CViewMain_ScanImage::OnBnClickedBtnImgBoth() { ChangeCtrPos(0); }
void CViewMain_ScanImage::OnBnClickedUpdnWidth1()  {(m_bWithScroll[0] == FALSE) ? m_bWithScroll[0] = TRUE : m_bWithScroll[0] = FALSE;}
void CViewMain_ScanImage::OnBnClickedUpdnWidth2()  {(m_bWithScroll[1] == FALSE) ? m_bWithScroll[1] = TRUE : m_bWithScroll[1] = FALSE;}
void CViewMain_ScanImage::OnBnClickedUpdnWidth3()  {(m_bWithScroll[2] == FALSE) ? m_bWithScroll[2] = TRUE : m_bWithScroll[2] = FALSE;}
void CViewMain_ScanImage::OnBnClickedUpdnWidth4()  {(m_bWithScroll[3] == FALSE) ? m_bWithScroll[3] = TRUE : m_bWithScroll[3] = FALSE;}
void CViewMain_ScanImage::OnBnClickedUpdnWidth6()  {(m_bWithScroll[4] == FALSE) ? m_bWithScroll[4] = TRUE : m_bWithScroll[4] = FALSE;}
void CViewMain_ScanImage::OnBnClickedUpdnWidth5()  {(m_bWithScroll[5] == FALSE) ? m_bWithScroll[5] = TRUE : m_bWithScroll[5] = FALSE;}
void CViewMain_ScanImage::OnBnClickedUpdnWidth7()  {(m_bWithScroll[6] == FALSE) ? m_bWithScroll[6] = TRUE : m_bWithScroll[6] = FALSE;}
void CViewMain_ScanImage::OnBnClickedUpdnWidth8()  {(m_bWithScroll[7] == FALSE) ? m_bWithScroll[7] = TRUE : m_bWithScroll[7] = FALSE;}
void CViewMain_ScanImage::OnBnClickedUpdnWidth1() { (m_bWithScroll[0] == FALSE) ? m_bWithScroll[0] = TRUE : m_bWithScroll[0] = FALSE; }
void CViewMain_ScanImage::OnBnClickedUpdnWidth2() { (m_bWithScroll[1] == FALSE) ? m_bWithScroll[1] = TRUE : m_bWithScroll[1] = FALSE; }
void CViewMain_ScanImage::OnBnClickedUpdnWidth3() { (m_bWithScroll[2] == FALSE) ? m_bWithScroll[2] = TRUE : m_bWithScroll[2] = FALSE; }
void CViewMain_ScanImage::OnBnClickedUpdnWidth4() { (m_bWithScroll[3] == FALSE) ? m_bWithScroll[3] = TRUE : m_bWithScroll[3] = FALSE; }
void CViewMain_ScanImage::OnBnClickedUpdnWidth6() { (m_bWithScroll[4] == FALSE) ? m_bWithScroll[4] = TRUE : m_bWithScroll[4] = FALSE; }
void CViewMain_ScanImage::OnBnClickedUpdnWidth5() { (m_bWithScroll[5] == FALSE) ? m_bWithScroll[5] = TRUE : m_bWithScroll[5] = FALSE; }
void CViewMain_ScanImage::OnBnClickedUpdnWidth7() { (m_bWithScroll[6] == FALSE) ? m_bWithScroll[6] = TRUE : m_bWithScroll[6] = FALSE; }
void CViewMain_ScanImage::OnBnClickedUpdnWidth8() { (m_bWithScroll[7] == FALSE) ? m_bWithScroll[7] = TRUE : m_bWithScroll[7] = FALSE; }
void CViewMain_ScanImage::OnBnClickedUpdnWidth9() { (m_bWithScroll[8] == FALSE) ? m_bWithScroll[8] = TRUE : m_bWithScroll[8] = FALSE; }
void CViewMain_ScanImage::OnBnClickedUpdnWidth10() { (m_bWithScroll[9] == FALSE) ? m_bWithScroll[9] = TRUE : m_bWithScroll[9] = FALSE; }
void CViewMain_ScanImage::OnBnClickedUpdnWidth11() { (m_bWithScroll[10] == FALSE) ? m_bWithScroll[10] = TRUE : m_bWithScroll[10] = FALSE; }
void CViewMain_ScanImage::OnBnClickedUpdnWidth12() { (m_bWithScroll[11] == FALSE) ? m_bWithScroll[11] = TRUE : m_bWithScroll[11] = FALSE; }
void CViewMain_ScanImage::OnBnClickedBtnLoad1() { ManualThreadStart(M_CMD_IMG_LOAD_SIDE, 0); }
void CViewMain_ScanImage::OnBnClickedBtnLoad2() { ManualThreadStart(M_CMD_IMG_LOAD_SIDE, 1); }
void CViewMain_ScanImage::OnBnClickedBtnLoad3() { ManualThreadStart(M_CMD_IMG_LOAD_SIDE, 2); }
void CViewMain_ScanImage::OnBnClickedBtnLoad4() { ManualThreadStart(M_CMD_IMG_LOAD_SIDE, 3); }
void CViewMain_ScanImage::OnBnClickedBtnLoad5() { ManualThreadStart(M_CMD_IMG_LOAD_SIDE, 4); }
void CViewMain_ScanImage::OnBnClickedBtnLoad6() { ManualThreadStart(M_CMD_IMG_LOAD_SIDE, 5); }
void CViewMain_ScanImage::OnBnClickedBtnLoad7() { ManualThreadStart(M_CMD_IMG_LOAD_SIDE, 6); }
void CViewMain_ScanImage::OnBnClickedBtnLoad8() { ManualThreadStart(M_CMD_IMG_LOAD_SIDE, 7); }
void CViewMain_ScanImage::OnBnClickedBtnLoad9() { ManualThreadStart(M_CMD_IMG_LOAD_SIDE, 8); }
void CViewMain_ScanImage::OnBnClickedBtnLoad10() { ManualThreadStart(M_CMD_IMG_LOAD_SIDE, 9); }
void CViewMain_ScanImage::OnBnClickedBtnLoad11() { ManualThreadStart(M_CMD_IMG_LOAD_SIDE, 10); }
void CViewMain_ScanImage::OnBnClickedBtnLoad12() { ManualThreadStart(M_CMD_IMG_LOAD_SIDE, 11); }
void CViewMain_ScanImage::OnBnClickedBtnLoad1() {ManualThreadStart(M_CMD_IMG_LOAD_SIDE,0);   }
void CViewMain_ScanImage::OnBnClickedBtnLoad2() {ManualThreadStart(M_CMD_IMG_LOAD_SIDE,1);   }
void CViewMain_ScanImage::OnBnClickedBtnLoad3() {ManualThreadStart(M_CMD_IMG_LOAD_SIDE,2);   }
void CViewMain_ScanImage::OnBnClickedBtnLoad4() {ManualThreadStart(M_CMD_IMG_LOAD_SIDE,3);   }
void CViewMain_ScanImage::OnBnClickedBtnLoad5() {ManualThreadStart(M_CMD_IMG_LOAD_SIDE,4);   }
void CViewMain_ScanImage::OnBnClickedBtnLoad6() {ManualThreadStart(M_CMD_IMG_LOAD_SIDE,5);   }
void CViewMain_ScanImage::OnBnClickedBtnLoad7() {ManualThreadStart(M_CMD_IMG_LOAD_SIDE,6);   }
void CViewMain_ScanImage::OnBnClickedBtnLoad8() {ManualThreadStart(M_CMD_IMG_LOAD_SIDE,7);   }
void CViewMain_ScanImage::OnBnClickedBtnSave1() {ManualThreadStart(M_CMD_IMG_SAVE_SIDE,0);   }
void CViewMain_ScanImage::OnBnClickedBtnSave2() {ManualThreadStart(M_CMD_IMG_SAVE_SIDE,1);   }
void CViewMain_ScanImage::OnBnClickedBtnSave3() {ManualThreadStart(M_CMD_IMG_SAVE_SIDE,2);   }
void CViewMain_ScanImage::OnBnClickedBtnSave4() {ManualThreadStart(M_CMD_IMG_SAVE_SIDE,3);   }
void CViewMain_ScanImage::OnBnClickedBtnSave5() {ManualThreadStart(M_CMD_IMG_SAVE_SIDE,4);   }
void CViewMain_ScanImage::OnBnClickedBtnSave6() {ManualThreadStart(M_CMD_IMG_SAVE_SIDE,5);   }
void CViewMain_ScanImage::OnBnClickedBtnSave7() {ManualThreadStart(M_CMD_IMG_SAVE_SIDE,6);   }
void CViewMain_ScanImage::OnBnClickedBtnSave8() {ManualThreadStart(M_CMD_IMG_SAVE_SIDE,7);   }
void CViewMain_ScanImage::OnBnClickedBtnSave1() { ManualThreadStart(M_CMD_IMG_SAVE_SIDE, 0); }
void CViewMain_ScanImage::OnBnClickedBtnSave2() { ManualThreadStart(M_CMD_IMG_SAVE_SIDE, 1); }
void CViewMain_ScanImage::OnBnClickedBtnSave3() { ManualThreadStart(M_CMD_IMG_SAVE_SIDE, 2); }
void CViewMain_ScanImage::OnBnClickedBtnSave4() { ManualThreadStart(M_CMD_IMG_SAVE_SIDE, 3); }
void CViewMain_ScanImage::OnBnClickedBtnSave5() { ManualThreadStart(M_CMD_IMG_SAVE_SIDE, 4); }
void CViewMain_ScanImage::OnBnClickedBtnSave6() { ManualThreadStart(M_CMD_IMG_SAVE_SIDE, 5); }
void CViewMain_ScanImage::OnBnClickedBtnSave7() { ManualThreadStart(M_CMD_IMG_SAVE_SIDE, 6); }
void CViewMain_ScanImage::OnBnClickedBtnSave8() { ManualThreadStart(M_CMD_IMG_SAVE_SIDE, 7); }
void CViewMain_ScanImage::OnBnClickedBtnSave9() { ManualThreadStart(M_CMD_IMG_SAVE_SIDE, 8); }
void CViewMain_ScanImage::OnBnClickedBtnSave10() { ManualThreadStart(M_CMD_IMG_SAVE_SIDE, 9); }
void CViewMain_ScanImage::OnBnClickedBtnSave11() { ManualThreadStart(M_CMD_IMG_SAVE_SIDE, 10); }
void CViewMain_ScanImage::OnBnClickedBtnSave12() { ManualThreadStart(M_CMD_IMG_SAVE_SIDE, 11); }
void CViewMain_ScanImage::OnBnClickedLoadAll()  {ManualThreadStart(M_CMD_IMG_LOAD_ALL,-1);}
void CViewMain_ScanImage::OnBnClickedSaveAll()  {ManualThreadStart(M_CMD_IMG_SAVE_ALL,-1);}
@@ -1159,8 +999,9 @@
void CViewMain_ScanImage::SaveFullImageAll()
{
   if(m_pGlassData == NULL || m_IV2M == NULL)
   if (m_pGlassData == NULL || m_IV2M == NULL) {
      return;
   }
   int            iView;
   CPoint         ptStart;
@@ -1170,95 +1011,85 @@
   int            iSide;
   int            nTotalLength = 0;
   int            nFrame = 0;
   CGlassRecipe *pGlassRcp = m_pGlassData->GetGlassRecipe();
   CGlassRecipe    *pGlassRcp = m_pGlassData->GetGlassRecipe();
#if OFFLINE_KEY == 1
   if (NULL == pGlassRcp) return;
#endif
   CString         strRcpName = pGlassRcp->GetRecipeName();
   CString         strGlassID = g_pBase->m_strHPanelID;
   CString   strRcpName = pGlassRcp->GetRecipeName();
   CString   strGlassID = g_pBase->m_strHPanelID;
   if(strGlassID.IsEmpty() == TRUE)
   {
   if(strGlassID.IsEmpty() == TRUE) {
      strGlassID = _T("Manual_ID");
   }
   if(strRcpName.IsEmpty() == TRUE)
   {
   if(strRcpName.IsEmpty() == TRUE) {
      strRcpName = _T("TestRcp");
   }
   strGlassID.Trim(_T(' '));
   CTime   time = CTime::GetCurrentTime();
   CString         strDate,strTime;
   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;iView<MAX_DIMENSION_COUNT;iView++)
   {
   for(iView=0;iView<MAX_DIMENSION_COUNT;iView++) {
      iSide  = GetSideIdx(iView);      
      int         iCam = m_pHardware->GetCameraIndexToDimension((DimensionDir)iSide);
      int         iScan = m_pHardware->GetScanToDimension((DimensionDir)iSide);
      int   iCam = m_pHardware->GetCameraIndexToDimension((DimensionDir)iSide);
      int   iScan = m_pHardware->GetScanToDimension((DimensionDir)iSide);
      CCameraSettings *pCamera = m_pHardware->GetCameraSettings(iCam,iScan);
      if(pCamera == NULL)
      if (pCamera == NULL) {
         return;
      }
      nTotalLength = (pCamera->m_nGrabFrameCount-1)*pCamera->m_FrameSize.cy;
      //nFrame = nTotalLength/nOneFrameSize;
      ptStart.x = 0;
      ptStart.y =  max(0,0);
      ptStart.y = max(0,0);
      int         nMaxSize = (pCamera->m_nGrabFrameCount-1)*pCamera->m_FrameSize.cy;
      int   nMaxSize = (pCamera->m_nGrabFrameCount-1)*pCamera->m_FrameSize.cy;
      CSide_Data* pSideData = m_pGlassData->GetSideData((DimensionDir)iSide);
      if(pSideData != NULL)
      {
      if(pSideData != NULL) {
         ptStart.y = max(0,pSideData->m_nGlassStartLine-1000);
         nTotalLength = min((int)((pSideData->m_nPreGlassEndLine + 1000) - ptStart.y),nMaxSize);
      }   
      if(nTotalLength < 10000)
      if (nTotalLength < 10000) {
         nTotalLength = nMaxSize;
      }
      nFrame = nTotalLength/nOneFrameSize;
      if(ptStart.y < 0)
      nFrame = nTotalLength / nOneFrameSize;
      if (ptStart.y < 0) {
         ptStart.y = 0;
      for(int i = 0; i < nFrame ; i++)
      {
      }
      for(int i = 0; i < nFrame ; i++) {
         nLength = nOneFrameSize;
         if(ptStart.y+nLength >= nMaxSize)
         if (ptStart.y + nLength >= nMaxSize) {
            continue;
         }
         strPath.Format(_T("%s\\DebugFullImage\\%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)
         {
      if(nLength > 10) {
         if(ptStart.y+nLength < nMaxSize) {
            strPath.Format(_T("%s\\DebugFullImage\\%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);
            m_IV2M->IV2M_SaveFullImage(strPath,iSide,ptStart,nLength);
            g_pLog->DisplayMessage(_T("%s %d Save Completed : %s"), PANEL_SIDE[iSide], nFrame, strPath);
         }         
      }
      g_pLog->DisplayMessage(_T("%s %d Save Completed : %s"),PANEL_SIDE[iSide],nFrame,strPath);
   }
}
@@ -1272,18 +1103,20 @@
   int nTotalLength = 0;
   int nFrame = 0;
   if(m_pGlassData == NULL || m_IV2M == NULL)
   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);
   int   iCam = m_pHardware->GetCameraIndexToDimension((DimensionDir)iSide);
   int   iScan = m_pHardware->GetScanToDimension((DimensionDir)iSide);
   CCameraSettings *pCamera = m_pHardware->GetCameraSettings(iCam,iScan);
   if(pCamera == NULL)
   if (pCamera == NULL) {
      return;
   }
   nTotalLength = pCamera->m_nGrabFrameCount*pCamera->m_FrameSize.cy;
   nFrame = nTotalLength/nOneFrameSize;
@@ -1292,35 +1125,30 @@
   ptStart.y =  max(0,0);
   CSide_Data *pSideData = m_pGlassData->GetSideData((DimensionDir)iSide);
   if(pSideData != NULL)
   {
   if(pSideData != NULL) {
      ptStart.y = max(0,pSideData->m_nGlassStartLine-1000);
      nTotalLength = min((pSideData->m_nGlassEndLine + 1000) - ptStart.y,pCamera->m_nGrabFrameCount*pCamera->m_FrameSize.cy);
   }   
   
   CString         strGlassID = g_pBase->m_strHPanelID;
   if(strGlassID.IsEmpty() == TRUE)
   {
   if(strGlassID.IsEmpty() == TRUE) {
      strGlassID = _T("Manual_ID");
   }
   if(strRcpName.IsEmpty() == TRUE)
   {
   if(strRcpName.IsEmpty() == TRUE) {
      strRcpName = _T("TestRcp");
   }
   strGlassID.Trim(_T(' '));
   CTime   time = CTime::GetCurrentTime();
   CString         strDate,strTime;
   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++)
   {
   for(int i = 0; i < nFrame ; i++) {
      nLength = nOneFrameSize;
   
      strPath.Format(_T("%s\\DebugFullImage\\%s\\%s\\%s\\%s\\%s__%s_%d"),PATH_INSPECTION_DATA,strDate,strRcpName,strGlassID,strTime,strGlassID,PANEL_SIDE[iSide],i);
@@ -1331,27 +1159,24 @@
      g_pLog->DisplayMessage(_T("%s %d Save Completed : %s"),PANEL_SIDE[iSide],i,strPath);
   }
   nLength = nTotalLength%nOneFrameSize;
   if(nLength)
   {
   nLength = nTotalLength % nOneFrameSize;
   if(nLength) {
      strPath.Format(_T("%s\\DebugFullImage\\%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 CViewMain_ScanImage::ManualProcessAll(LPVOID pParam)
{
   CViewMain_ScanImage *pDlg = (CViewMain_ScanImage*)pParam;
   int i =0;
   if(pDlg->m_nThreadCmd == M_CMD_PROC_ALL_START
   if(pDlg->m_nThreadCmd == M_CMD_PROC_ALL_START
      || pDlg->m_nThreadCmd == M_CMD_PROC_LONG_START
      || pDlg->m_nThreadCmd == M_CMD_PROC_SHORT_START
      || pDlg->m_nThreadCmd == M_CMD_PROC_LONG_START)
      || pDlg->m_nThreadCmd == M_CMD_PROC_RIP_START)
   {
      pDlg->m_IV2M->IV2M_InspectionProcessAll(pDlg->m_nThreadCmd);
   }
@@ -1362,7 +1187,7 @@
      pDlg->m_IV2M->IV2M_LoadImageFullFile(-1,pDlg->m_pGlassData, [&] (BYTE iSide)
      {
         int         iView = pDlg->GetViewIndex(iSide);
         int   iView = pDlg->GetViewIndex(iSide);
         pDlg->InitScrollInfo(iSide,0);
         pDlg->m_frameImg[iView].Invalidate(FALSE);
@@ -1377,7 +1202,7 @@
   {
      pDlg->m_IV2M->IV2M_LoadImageFullFile(pDlg->GetSideIdx(pDlg->m_nIndex),pDlg->m_pGlassData, [&] (BYTE iSide)
      {
         int         iView = pDlg->GetViewIndex(iSide);
         int   iView = pDlg->GetViewIndex(iSide);
         pDlg->InitScrollInfo(iSide,0);
         pDlg->m_frameImg[iView].Invalidate(FALSE);
@@ -1412,10 +1237,8 @@
   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
@@ -1435,19 +1258,17 @@
void CViewMain_ScanImage::OnBnClickedBtnInitDisplay()
{
   for(int i = 0; i <8 ; i++)
   {
   for(int i = 0; i < MAX_PANEL_SIDE * UPDN_TYPE; i++) {
      InitScrollInfo(i,0);      
      int nSide    = GetSideIdx(i);
      int nSide = GetSideIdx(i);
      m_frameImg[i].SetSideIdx(nSide);
      m_frameImg[i].SetImageBuffer(GetBufferPoint(i,0));
      m_frameImg[i].Invalidate();
   }   
   if(m_IV2M != NULL)
   {
   if(m_IV2M != NULL) {
      m_IV2M->IV2M_InitView(VIEW_SCANIMAGE);
   }
}
@@ -1457,15 +1278,19 @@
   switch(m_nShowSelect)
   {
   case 0: 
      ManualThreadStart(M_CMD_PROC_ALL_START   );
      ManualThreadStart(M_CMD_PROC_ALL_START);
      break;
   case 1: 
      ManualThreadStart(M_CMD_PROC_LONG_START   );
      ManualThreadStart(M_CMD_PROC_LONG_START);
      break;
   case 2:
      ManualThreadStart(M_CMD_PROC_SHORT_START);  
      break;
   case 3:
      ManualThreadStart(M_CMD_PROC_RIP_START);
      break;
   }
}
@@ -1479,7 +1304,7 @@
   /*
   BOOL bCheck = ((CButton*)GetDlgItem(IDC_CHECK_AUTO_SIZE))->GetCheck();
   for(int i = 0 ; i < 8 ; i++)
   for(int i = 0 ; i < MAX_PANEL_SIDE * UPDN_TYPE ; i++)
   {
      if(bCheck)
         m_frameImg[i].SetMode(MODE_AUTO_MEASURE); 
@@ -1487,4 +1312,68 @@
         m_frameImg[i].ResetMode(MODE_AUTO_MEASURE); 
   }
   */
}
void CViewMain_ScanImage::LayoutCameraGroup(int nStartIdx, int nCount, CPoint& pt, int nImgWidth, int nImgHeight, int nInfo, int nHScroll)
{
   for (int i = 0; i < nCount; ++i) {
      int idx = nStartIdx + i;
      m_btnLoad[idx].MoveWindow(pt.x, pt.y, nInfo, nInfo, FALSE);
      m_btnSave[idx].MoveWindow(pt.x + nImgWidth - nInfo, pt.y, nInfo, nInfo, FALSE);
      m_staticCamInfo[idx].MoveWindow(pt.x + nInfo, pt.y, nImgWidth - nInfo * 2, nInfo, FALSE);
      m_frameImg[idx].MoveWindow(pt.x, pt.y + nInfo, nImgWidth, nImgHeight, FALSE);
      CRect rtWnd;
      m_frameImg[idx].GetClientRect(rtWnd);
      m_frameImg[idx].SetWndRect(rtWnd);
      m_chkWithScorll[idx].MoveWindow(pt.x + nImgWidth, pt.y + nInfo + nImgHeight, nHScroll, nInfo, FALSE);
      m_ctrlScrollV[idx].MoveWindow(pt.x + nImgWidth, pt.y + nInfo, nHScroll, nImgHeight, FALSE);
      m_ctrlScrollH[idx].MoveWindow(pt.x, pt.y + nInfo + nImgHeight, nImgWidth, nInfo, FALSE);
      pt.x += nImgWidth + nHScroll;
   }
}
void CViewMain_ScanImage::ShowCameraGroup(int nStartIdx, int nCount, BOOL bShow)
{
   int nCmd = bShow ? SW_SHOW : SW_HIDE;
   for (int i = nStartIdx; i < nStartIdx + nCount; ++i) {
      m_btnLoad[i].ShowWindow(nCmd);
      m_btnSave[i].ShowWindow(nCmd);
      m_staticCamInfo[i].ShowWindow(nCmd);
      m_ctrlScrollV[i].ShowWindow(nCmd);
      m_ctrlScrollH[i].ShowWindow(nCmd);
      m_chkWithScorll[i].ShowWindow(nCmd);
      m_frameImg[i].ShowWindow(nCmd);
   }
}
CCameraSettings* CViewMain_ScanImage::GetCameraSettingsByViewIndex(int nViewIndex)
{
   CCameraSettings* pCamera = NULL;
   if (nullptr == m_pHardware) {
      return pCamera;
   }
   // ViewIndex -> DimensionDir
   static const DimensionDir SIDE_MAP[] = {
      DIMENSION_C, DIMENSION_C_DN,
      DIMENSION_A, DIMENSION_A_DN,
      DIMENSION_D, DIMENSION_D_DN,
      DIMENSION_B, DIMENSION_B_DN,
      DIMENSION_A_RIP, DIMENSION_B_RIP,
      DIMENSION_C_RIP, DIMENSION_D_RIP
   };
   if (nViewIndex < 0 || nViewIndex >= _countof(SIDE_MAP)) {
      AfxMessageBox(_T("GetCameraSettingsByViewIndex: Invalid view index"));
      return nullptr;
   }
   DimensionDir eSide = SIDE_MAP[nViewIndex];
   int nScan = m_pHardware->GetScanToDimension(eSide);
   int nCamera = m_pHardware->GetCameraIndexToDimension(eSide);
   return pCamera = m_pHardware->GetCameraSettings(nCamera, nScan);
}