mrDarker
2025-08-07 47372488fddbcab4ab7b261d84a6b0f772a9bc34
1. 侧面检添加配方功能
2. 侧面检本地加载
3. 侧面检运行界面添加
已修改9个文件
835 ■■■■ 文件已修改
EdgeInspector_App/Define/Global_Define.h 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EdgeInspector_App/Define/InspectionBase.cpp 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EdgeInspector_App/EdgeInspector_App.rc 补丁 | 查看 | 原始文档 | blame | 历史
EdgeInspector_App/MainFrm.cpp 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EdgeInspector_App/View/EdgeImageViewer.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EdgeInspector_App/View/ViewMain_ScanImage.cpp 650 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EdgeInspector_App/View/ViewMain_ScanImage.h 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EdgeInspector_App/ViewMain_Recipe.cpp 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EdgeInspector_App/resource.h 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EdgeInspector_App/Define/Global_Define.h
@@ -43,7 +43,7 @@
#define CHKMIN(a,b)    (((a) < (b)) ? (a) : (b))
#define MAX_PANEL_SIDE                            4            // 搁 荐 
#define    UPDN_TYPE                                2            // 惑窍 鞍捞 乐绰版快 2 窍唱父 乐绰版快 1
#define    UPDN_TYPE                                3            // 惑窍 鞍捞 乐绰版快 2 窍唱父 乐绰版快 1
#define MAX_SIDE_COUNT                            12
#define MAX_CORNER_DIMENSION_MEASURE_COUNT        5
#define MAX_SIDE_DIMENSION_MEASURE_COUNT        16            // 弥措 Frame 荐 父怒
@@ -56,14 +56,14 @@
/*
#define MAX_PROFILE_SETTING_COUNT        79
#define PROFILE_INSPECT_SIZE_A_C    13
#define PROFILE_INSPECT_SIZE_B_D    10
#define PROFILE_RCUT_SIZE            5
#define PROFILE_INSPECT_INDEX_A        33
#define PROFILE_INSPECT_INDEX_B        0
#define PROFILE_INSPECT_INDEX_C        10
#define PROFILE_INSPECT_INDEX_D        23
#define PROFILE_INSPECT_INDEX_CF    46
#define PROFILE_INSPECT_SIZE_A_C        13
#define PROFILE_INSPECT_SIZE_B_D        10
#define PROFILE_RCUT_SIZE                5
#define PROFILE_INSPECT_INDEX_A            33
#define PROFILE_INSPECT_INDEX_B            0
#define PROFILE_INSPECT_INDEX_C            10
#define PROFILE_INSPECT_INDEX_D            23
#define PROFILE_INSPECT_INDEX_CF        46
#define PROFILE_RCUT_INSPECT_INDEX_A    59
#define PROFILE_RCUT_INSPECT_INDEX_B    64
#define PROFILE_RCUT_INSPECT_INDEX_C    69
@@ -90,7 +90,7 @@
    enum    ScanDirectionIns            { SD_Forward = 0, SD_Backward, SD_Unknown };    // Glass 扁霖 Scan 规氢.
    enum    DimensionDir                { 
        DIMENSION_A=0,
        DIMENSION_A = 0,
        DIMENSION_B,
        DIMENSION_C,
        DIMENSION_D,
@@ -112,7 +112,13 @@
    enum    GlassDirection                { GD_LeftTop = 0, GD_RightTop = 1, GD_LeftBottom = 10, GD_RightBottom = 11 };
    enum    ExpRegionType                { ER_ALL=0, ER_AREA, ER_NONE};//130115
    enum    Procee_Mode                    {PROC_MODE_AUTO=0,PROC_MODE_SIMULATION_ONESIDE,PROC_MODE_SIMULATION_SIDESHORT,PROC_MODE_SIMULATION_SIDELONG,PROC_MODE_SIMULATION_ALL};
    enum    Procee_Mode                    {
        PROC_MODE_AUTO = 0,
        PROC_MODE_SIMULATION_ONESIDE,
        PROC_MODE_SIMULATION_SIDESHORT,
        PROC_MODE_SIMULATION_SIDELONG,
        PROC_MODE_SIMULATION_ALL
    };
    enum    Init_View_Command            {VIEW_RECIPE=0,VIEW_SCANIMAGE};
};
@@ -291,7 +297,21 @@
#define ZOOM_RANGE        20
#define ZOOM_RATIO        (1.0/(((double)ZOOM_RANGE+2.0)/2.0))
enum eViewCmdSide        {eRcp_SideRD_A=0, eRcp_SideRD_B, eRcp_SideRD_C, eRcp_SideRD_D,eRcp_SideRD_A_DN,eRcp_SideRD_B_DN,eRcp_SideRD_C_DN,eRcp_SideRD_D_DN,eRcp_SideRD_End};
enum eViewCmdSide        {
    eRcp_SideRD_A = 0,
    eRcp_SideRD_B,
    eRcp_SideRD_C,
    eRcp_SideRD_D,
    eRcp_SideRD_A_DN,
    eRcp_SideRD_B_DN,
    eRcp_SideRD_C_DN,
    eRcp_SideRD_D_DN,
    eRcp_SideRD_A_RIP,
    eRcp_SideRD_B_RIP,
    eRcp_SideRD_C_RIP,
    eRcp_SideRD_D_RIP,
    eRcp_SideRD_End
};
enum eViewCmdInsType    
{
EdgeInspector_App/Define/InspectionBase.cpp
@@ -1,7 +1,11 @@
#include "stdafx.h"
#include "config.h"
const TCHAR *PANEL_SIDE[]        = {_T("A_TOP"), _T("B_TOP"), _T("C_TOP"), _T("D_TOP"),_T("A_BOT"), _T("B_BOT"), _T("C_BOT"), _T("D_BOT")};
const TCHAR *PANEL_SIDE[] = {
    _T("A_TOP"), _T("B_TOP"), _T("C_TOP"), _T("D_TOP"),
    _T("A_BOT"), _T("B_BOT"), _T("C_BOT"), _T("D_BOT"),
    _T("A_RIP"), _T("B_RIP"), _T("C_RIP"), _T("D_RIP")
};
CInspectionBase::CInspectionBase()
{
EdgeInspector_App/EdgeInspector_App.rc
Binary files differ
EdgeInspector_App/MainFrm.cpp
@@ -436,7 +436,7 @@
            for(iCam=0;iCam<MAX_CAMERA_COUNT;iCam++)
            {                    
                pMain->ScanStartGrabManual(iCam,0);
                pMain->ScanStartManual(iCam,0);
                pMain->ScanStartManual(iCam,0);
            }
        }
        break;
@@ -490,7 +490,7 @@
            for(iCam=0;iCam<MAX_CAMERA_COUNT;iCam++)
            {
                pMain->ScanStartManual(iCam,1);
                pMain->ScanStartManual(iCam,1);
            }    
        }
        break;
EdgeInspector_App/View/EdgeImageViewer.h
@@ -168,6 +168,7 @@
    void    SetHardwareSetting(CHardwareSettings* pHWSetting)     {m_pHardware = pHWSetting;}
    void    SetRecipe(CGlassRecipe* pRecipe)                     {m_pRecipe = pRecipe;}
    void    SetPixelSize(double dPixelSizeX, double dPixelSizeY) {m_dPixelSizeX = dPixelSizeX, m_dPixelSizeY = dPixelSizeY;}
    void    SetImageSize(int nWidth, int nHeight, int nFrameCount) {m_nFrameWidth = nWidth; m_nFrameHeight = nHeight; m_nFrameCount = nFrameCount;}
private:
    CRect                        m_rtWnd;
EdgeInspector_App/View/ViewMain_ScanImage.cpp
@@ -10,14 +10,13 @@
enum TYPE_MANUAL_CMD
{
    M_CMD_PROC_SHORT_START,
    M_CMD_PROC_SHORT_START = 0,
    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 措拳 惑磊涝聪促.
@@ -43,69 +42,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 +143,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 +155,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)
@@ -172,8 +206,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 +219,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 +238,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 +250,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;
        }
    }
@@ -235,7 +266,7 @@
    if(bShow == TRUE)
    {
        int nSide;        
        CString        strTitle;
        CString    strTitle;
        for(int i = 0 ; i < MAX_PANEL_SIDE * UPDN_TYPE; i++)
        {
            nSide = GetSideIdx(i);
@@ -246,20 +277,9 @@
            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 = LiveGetSideIdx(i);
                if(pCamera != NULL) {
                    double dPixelSizeX = pCamera->m_dConvResolution[0];
                    double dPixelSizeY = pCamera->m_dScanResolution[0];
                    m_frameImg[i].SetPixelSize(dPixelSizeX, dPixelSizeY);
@@ -281,11 +301,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();
@@ -378,7 +396,7 @@
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);
    }    
@@ -403,6 +421,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 +435,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 +456,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 +520,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);    
@@ -1050,7 +891,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 +913,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);}
@@ -1334,7 +1188,7 @@
{
    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_SHORT_START
        || pDlg->m_nThreadCmd == M_CMD_PROC_LONG_START)
    {
@@ -1347,7 +1201,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);
@@ -1362,7 +1216,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);
@@ -1397,10 +1251,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
@@ -1420,19 +1272,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);
    }
}
@@ -1442,16 +1292,20 @@
    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;
    }
}
@@ -1464,7 +1318,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); 
@@ -1472,4 +1326,70 @@
            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::LiveGetSideIdx(int nViewIndex)
{
    CCameraSettings* pCamera = NULL;
    if (m_pHardware != nullptr) {
        int nSide = GetSideIdx(nViewIndex);
        int nCamera = m_pHardware->GetCameraIndexToDimension((DimensionDir)nSide);
        if (nViewIndex < MAX_PANEL_SIDE) {
            // Long side
            pCamera = m_pHardware->GetCameraSettings(nCamera, 0);
        }
        else if (nViewIndex < 2 * MAX_PANEL_SIDE) {
            // Short side
            pCamera = m_pHardware->GetCameraSettings(nCamera, 1);
        }
        else {
            // Rip side
            int nRipIndex = nViewIndex - 2 * MAX_PANEL_SIDE;
            int nRipCamera = nRipIndex / 2 + MAX_PANEL_SIDE;
            if (nRipIndex % 2 != 0) {
                pCamera = m_pHardware->GetCameraSettings(nCamera, 0);
            }
            else {
                pCamera = m_pHardware->GetCameraSettings(nCamera, 1);
            }
        }
    }
    return pCamera;
}
EdgeInspector_App/View/ViewMain_ScanImage.h
@@ -26,6 +26,18 @@
    afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
    afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
    afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
    afx_msg void OnBnClickedUpdnWidth1();
    afx_msg void OnBnClickedUpdnWidth2();
    afx_msg void OnBnClickedUpdnWidth3();
    afx_msg void OnBnClickedUpdnWidth4();
    afx_msg void OnBnClickedUpdnWidth6();
    afx_msg void OnBnClickedUpdnWidth5();
    afx_msg void OnBnClickedUpdnWidth7();
    afx_msg void OnBnClickedUpdnWidth8();
    afx_msg void OnBnClickedUpdnWidth9();
    afx_msg void OnBnClickedUpdnWidth10();
    afx_msg void OnBnClickedUpdnWidth11();
    afx_msg void OnBnClickedUpdnWidth12();
    afx_msg void OnBnClickedBtnLoad1();
    afx_msg void OnBnClickedBtnSave1();
    afx_msg void OnBnClickedBtnLoad2();
@@ -34,17 +46,6 @@
    afx_msg void OnBnClickedBtnSave3();
    afx_msg void OnBnClickedBtnLoad4();
    afx_msg void OnBnClickedBtnSave4();
    afx_msg void OnNMCustomdrawSliderZoom(NMHDR *pNMHDR, LRESULT *pResult);
    afx_msg void OnNMReleasedcaptureSliderZoom(NMHDR *pNMHDR, LRESULT *pResult);
    afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
    afx_msg void OnBnClickedUpdnWidth1();
    afx_msg void OnBnClickedUpdnWidth2();
    afx_msg void OnBnClickedUpdnWidth3();
    afx_msg void OnBnClickedUpdnWidth4();
    afx_msg void OnBnClickedUpdnWidth6();
    afx_msg void OnBnClickedUpdnWidth5();
    afx_msg void OnBnClickedUpdnWidth7();
    afx_msg void OnBnClickedUpdnWidth8();
    afx_msg void OnBnClickedBtnLoad5();
    afx_msg void OnBnClickedBtnSave5();
    afx_msg void OnBnClickedBtnLoad6();
@@ -53,8 +54,17 @@
    afx_msg void OnBnClickedBtnSave7();
    afx_msg void OnBnClickedBtnLoad8();
    afx_msg void OnBnClickedBtnSave8();
    afx_msg void OnBnClickedButton1();
    afx_msg void OnBnClickedButton2();
    afx_msg void OnBnClickedBtnLoad9();
    afx_msg void OnBnClickedBtnSave9();
    afx_msg void OnBnClickedBtnLoad10();
    afx_msg void OnBnClickedBtnSave10();
    afx_msg void OnBnClickedBtnLoad11();
    afx_msg void OnBnClickedBtnSave11();
    afx_msg void OnBnClickedBtnLoad12();
    afx_msg void OnBnClickedBtnSave12();
    afx_msg void OnNMCustomdrawSliderZoom(NMHDR *pNMHDR, LRESULT *pResult);
    afx_msg void OnNMReleasedcaptureSliderZoom(NMHDR *pNMHDR, LRESULT *pResult);
    afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
    afx_msg void OnBnClickedCheckAutoDefectView();
    afx_msg void OnBnClickedBtnCommunication();
    afx_msg void OnBnClickedCheckAutoView();
@@ -74,6 +84,7 @@
    void            ViewRefresh(PROG_MSG ProcMsg);    
protected:
    void            OnBnClickedBtnImgRip();
    void            OnBnClickedBtnImgShort();
    void            OnBnClickedBtnImgLong();
    void            OnBnClickedBtnImgBoth();
@@ -93,7 +104,10 @@
    BOOL            ManualThreadStart(int nCmd,int nIndex = -1);            
    static UINT        ManualProcessAll(LPVOID pParam);
    void            SaveFullImage(int nViewIndex);
    void            SaveFullImageAll();
    void            SaveFullImageAll();
    void            LayoutCameraGroup(int nStartIdx, int nCount, CPoint& pt, int nImgWidth, int nImgHeight, int nInfo, int nHScroll);
    void            ShowCameraGroup(int nStartIdx, int nCount, BOOL bShow);
    CCameraSettings* LiveGetSideIdx(int nViewIndex);
protected:
    CMFCButton        m_btnLoad[MAX_PANEL_SIDE * UPDN_TYPE];
@@ -107,9 +121,9 @@
    CSliderCtrl        m_sliderZoom;
    double            m_dZoom;
    CScrollBar        m_ctrlScrollV[MAX_PANEL_SIDE * UPDN_TYPE],m_ctrlScrollH[MAX_PANEL_SIDE * UPDN_TYPE];
    CScrollBar        m_ctrlScrollV[MAX_PANEL_SIDE * UPDN_TYPE];
    CScrollBar        m_ctrlScrollH[MAX_PANEL_SIDE * UPDN_TYPE];
    BOOL            m_bWithScroll[MAX_PANEL_SIDE * UPDN_TYPE];
    //CFrameImg        m_frameImg[MAX_PANEL_SIDE * UPDN_TYPE];
    CEdgeImageViewer m_frameImg[MAX_PANEL_SIDE * UPDN_TYPE];
    int                m_nShowSelect;
    BOOL            m_bInitDlg;
EdgeInspector_App/ViewMain_Recipe.cpp
@@ -167,6 +167,10 @@
    ON_EVENT(CViewMain_Recipe, IDC_RDO_SIDE_B_BOT, DISPID_CLICK, CViewMain_Recipe::ClickSideSelButton, VTS_NONE)
    ON_EVENT(CViewMain_Recipe, IDC_RDO_SIDE_C_BOT, DISPID_CLICK, CViewMain_Recipe::ClickSideSelButton, VTS_NONE)
    ON_EVENT(CViewMain_Recipe, IDC_RDO_SIDE_D_BOT, DISPID_CLICK, CViewMain_Recipe::ClickSideSelButton, VTS_NONE)
    ON_EVENT(CViewMain_Recipe, IDC_RDO_SIDE_A_RIP, DISPID_CLICK, CViewMain_Recipe::ClickSideSelButton, VTS_NONE)
    ON_EVENT(CViewMain_Recipe, IDC_RDO_SIDE_B_RIP, DISPID_CLICK, CViewMain_Recipe::ClickSideSelButton, VTS_NONE)
    ON_EVENT(CViewMain_Recipe, IDC_RDO_SIDE_C_RIP, DISPID_CLICK, CViewMain_Recipe::ClickSideSelButton, VTS_NONE)
    ON_EVENT(CViewMain_Recipe, IDC_RDO_SIDE_D_RIP, DISPID_CLICK, CViewMain_Recipe::ClickSideSelButton, VTS_NONE)
    ON_EVENT(CViewMain_Recipe, IDC_RDO_INSTYPE_CHIP, DISPID_CLICK, CViewMain_Recipe::ClickRdoInsType, VTS_NONE)
    ON_EVENT(CViewMain_Recipe, IDC_RDO_INSTYPE_CRACK, DISPID_CLICK, CViewMain_Recipe::ClickRdoInsType, VTS_NONE)
@@ -1118,6 +1122,18 @@
    case IDC_RDO_SIDE_D_BOT:
        eSelView = eRcp_SideRD_D_DN;        
        break;
    case IDC_RDO_SIDE_A_RIP:
        eSelView = eRcp_SideRD_A_RIP;
        break;
    case IDC_RDO_SIDE_B_RIP:
        eSelView = eRcp_SideRD_B_RIP;
        break;
    case IDC_RDO_SIDE_C_RIP:
        eSelView = eRcp_SideRD_C_RIP;
        break;
    case IDC_RDO_SIDE_D_RIP:
        eSelView = eRcp_SideRD_D_RIP;
        break;
    default:
        return;
    }
@@ -1133,11 +1149,17 @@
    double dPixelSizeX = 1.0;
    double dPixelSizeY = 1.0;
    int nFrameWidth = IMAGE_WIDTH;
    int nFrameWidth = IMAGE_WIDTH / 2;
    if (eSelView < eRcp_SideRD_A_RIP){
        nFrameWidth = IMAGE_WIDTH;
    }
    int nFrameHeight = IMAGE_HEIGHT;
    int nFrameCount = MAX_FRAM_COUNT;
    GetResolution(dPixelSizeX, dPixelSizeY, nFrameWidth, nFrameHeight, nFrameCount);
    m_frameImg.SetPixelSize(dPixelSizeX, dPixelSizeY);
    m_frameImg.SetImageSize(nFrameWidth, nFrameHeight, nFrameCount);
#if HALCON_VISION_KEY
    if (NULL != m_pVisionSetDlg) {
@@ -1541,6 +1563,14 @@
    m_PanelInfo.SetItemText(nRowIdx, nColIdx++, _T("C Bot"));
    m_PanelInfo.SetColumnWidth(nColIdx, 80);
    m_PanelInfo.SetItemText(nRowIdx, nColIdx++, _T("D Bot"));
    m_PanelInfo.SetColumnWidth(nColIdx, 80);
    m_PanelInfo.SetItemText(nRowIdx, nColIdx++, _T("A RIP"));
    m_PanelInfo.SetColumnWidth(nColIdx, 80);
    m_PanelInfo.SetItemText(nRowIdx, nColIdx++, _T("B RIP"));
    m_PanelInfo.SetColumnWidth(nColIdx, 80);
    m_PanelInfo.SetItemText(nRowIdx, nColIdx++, _T("C RIP"));
    m_PanelInfo.SetColumnWidth(nColIdx, 80);
    m_PanelInfo.SetItemText(nRowIdx, nColIdx++, _T("D RIP"));
    nColIdx = 0;
    nRowIdx = 1;
@@ -1674,6 +1704,14 @@
    m_SideInspectInfo.SetItemText(nRowIdx, nColIdx++, _T("C Bot"));
    m_SideInspectInfo.SetColumnWidth(nColIdx, 80);
    m_SideInspectInfo.SetItemText(nRowIdx, nColIdx++, _T("D Bot"));
    m_SideInspectInfo.SetColumnWidth(nColIdx, 80);
    m_SideInspectInfo.SetItemText(nRowIdx, nColIdx++, _T("A RIP"));
    m_SideInspectInfo.SetColumnWidth(nColIdx, 80);
    m_SideInspectInfo.SetItemText(nRowIdx, nColIdx++, _T("B RIP"));
    m_SideInspectInfo.SetColumnWidth(nColIdx, 80);
    m_SideInspectInfo.SetItemText(nRowIdx, nColIdx++, _T("C RIP"));
    m_SideInspectInfo.SetColumnWidth(nColIdx, 80);
    m_SideInspectInfo.SetItemText(nRowIdx, nColIdx++, _T("D RIP"));
    nColIdx = 0;
    nRowIdx = 1;
@@ -1876,6 +1914,14 @@
    m_JudgementInfo.SetItemText(nRowIdx, nColIdx++, _T("C Bot"));
    m_JudgementInfo.SetColumnWidth(nColIdx, 80);
    m_JudgementInfo.SetItemText(nRowIdx, nColIdx++, _T("D Bot"));
    m_JudgementInfo.SetColumnWidth(nColIdx, 80);
    m_JudgementInfo.SetItemText(nRowIdx, nColIdx++, _T("A RIP"));
    m_JudgementInfo.SetColumnWidth(nColIdx, 80);
    m_JudgementInfo.SetItemText(nRowIdx, nColIdx++, _T("B RIP"));
    m_JudgementInfo.SetColumnWidth(nColIdx, 80);
    m_JudgementInfo.SetItemText(nRowIdx, nColIdx++, _T("C RIP"));
    m_JudgementInfo.SetColumnWidth(nColIdx, 80);
    m_JudgementInfo.SetItemText(nRowIdx, nColIdx++, _T("D RIP"));
    nColIdx = 0;
    nRowIdx = 1;
EdgeInspector_App/resource.h
@@ -216,6 +216,7 @@
#define IDC_NEWRECIPE_NAME_TITLE2       1023
#define IDC_BUT_LIST_NEWRECIPE          1023
#define IDC_BUT_BROWSE_DELETE_TOOL_EXE  1023
#define IDC_BTN_SAVE9                   1023
#define IDC_STATIC_IMG_2                1024
#define IDC_EDIT_RECIPENEW_NAME         1024
#define IDC_BUT_LIST_DELRECIPE          1024
@@ -239,16 +240,22 @@
#define IDC_STATIC_IMG_8                1029
#define IDC_BTN_BOT_MARK_DEL_1          1029
#define IDC_BTN_BOT_MARK_DEL_2          1030
#define IDC_STATIC_IMG_10               1030
#define IDC_SLIDER_1                    1031
#define IDC_STATIC_MARK_INFO_TITLE      1031
#define IDC_STATIC_IMG_11               1031
#define IDC_CHK_INS_REVERSE             1032
#define IDC_STATIC_VER_INFO             1032
#define IDC_STATIC_MARK_INFO_TITLE2     1032
#define IDC_STATIC_IMG_12               1032
#define IDC_SLIDER_3                    1033
#define IDC_STATIC_CURRENT_TIME         1033
#define IDC_BTN_SAVE10                  1033
#define IDC_SLIDER_2                    1034
#define IDC_STATIC_JUDGE                1034
#define IDC_BTN_SAVE11                  1034
#define IDC_STATIC_GLASS_ID             1035
#define IDC_BTN_SAVE12                  1035
#define IDC_SLIDER_4                    1036
#define IDC_SIDE_DIMENSION_SETTING_LIST 1036
#define IDC_SLIDER_5                    1037
@@ -355,6 +362,7 @@
#define IDC_STATIC_CAM_INFO4            1071
#define IDC_CHK_USECOLORVISUAL          1072
#define IDC_STATIC_SUBJECT              1072
#define IDC_SCROLLBAR_V_9               1072
#define IDC_UPDN_WIDTH1                 1074
#define IDC_BTN_PROC                    1075
#define IDC_SLIDER_ZOOM                 1076
@@ -390,8 +398,28 @@
#define IDC_UPDN_WIDTH6                 1100
#define IDC_UPDN_WIDTH7                 1101
#define IDC_UPDN_WIDTH8                 1102
#define IDC_UPDN_WIDTH9                 1103
#define IDC_UPDN_WIDTH11                1104
#define IDC_UPDN_WIDTH12                1105
#define IDC_STATIC_CAM_INFO9            1106
#define IDC_STATIC_CAM_INFO10           1107
#define IDC_STATIC_CAM_INFO11           1108
#define IDC_STATIC_CAM_INFO12           1109
#define IDC_STATIC_IMG_9                1110
#define IDC_SCROLLBAR_V_10              1111
#define IDC_SCROLLBAR_V_11              1112
#define IDC_SCROLLBAR_V_12              1113
#define IDC_SCROLLBAR_H_9               1114
#define IDC_SCROLLBAR_H_10              1115
#define IDC_SCROLLBAR_H_11              1116
#define IDC_SCROLLBAR_H_12              1117
#define IDC_BTN_LOAD9                   1118
#define IDC_BTN_LOAD10                  1119
#define IDC_EDIT_SCAN_SPEED             1120
#define IDC_BTN_LOAD11                  1120
#define IDC_EDIT_SCAN_SPEED_RATE        1121
#define IDC_BTN_LOAD12                  1121
#define IDC_BTN_IMG_RIP                 1122
#define IDC_EDIT_EXPOSURE               1123
#define IDC_EDIT_FRM_RATE_1             1124
#define IDC_EDIT_FRM_RATE_2             1125
@@ -474,6 +502,7 @@
#define IDC_CHK_DETECT_LIMITED_AREA     1228
#define IDC_UPDN_WIDTH2                 1230
#define IDC_UPDN_WIDTH5                 1231
#define IDC_UPDN_WIDTH10                1232
#define IDC_STATIC_C2                   1239
#define IDC_STATIC_RECIPE_BASE_BAR      1240
#define IDC_STATIC_RECIPE_NAME          1241
@@ -560,6 +589,8 @@
#define IDC_RDO_INSTYPE_TOP_CORNER      1820
#define IDC_RDO_INSTYPE_BOT_CORNER      1821
#define IDC_RDO_INSTYPE_CRACK           1822
#define IDC_RDO_SIDE_A_RIP              1823
#define IDC_RDO_SIDE_B_RIP              1824
#define IDC_RDO_INSTYPE_CF_CHIPCRACK    1825
#define IDC_RDO_INSTYPE_IN_CHIP         1825
#define IDC_RDO_INSTYPE_CF_BURR         1826
@@ -567,6 +598,9 @@
#define IDC_RDO_INSTYPE_IN_CRACK        1827
#define IDC_RDO_INSTYPE_IN_BURR2        1828
#define IDC_RDO_INSTYPE_IN_CHAMFER      1828
#define IDC_RDO_SIDE_C_RIP              1829
#define IDC_RDO_SIDE_D_BOT2             1830
#define IDC_RDO_SIDE_D_RIP              1830
#define ID_PROFILE_CHECKALL             32782
#define ID_PROFILE_CLEARALL             32783
#define ID_PROFILE_CURRENTX             32784
@@ -593,7 +627,7 @@
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        329
#define _APS_NEXT_RESOURCE_VALUE        330
#define _APS_NEXT_COMMAND_VALUE         32771
#define _APS_NEXT_CONTROL_VALUE         1071
#define _APS_NEXT_SYMED_VALUE           310