SDC C-Project CF Review 프로그램
LYW
2021-08-10 8ac7359b04409c2a1426f9a179c00b1c966d0146
Ongoing50 #3562 CF AOI Review 실행 프로그램 경로 변경

1.C드라이브 참조 경로 D드라이브로 변경
12개 파일 변경됨
418 ■■■■ 파일 변경됨
ReviewSystem/ReviewRecipeEditor/ReviewRecipeEditorDlg.cpp 156 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewRecipeEditor/stdafx.h 49 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/CameraControlAlign.cpp 3 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/CameraControlReview.cpp 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/DlgReviewOffSetTool.h 6 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/FileUploadControl.cpp 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/MainFrm.cpp 6 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/stdafx.h 32 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystemSetting/ReviewSystemSettingDlg.cpp 77 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystemSetting/stdafx.h 39 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/include/CHReviewRecipe/RsRcpAlignInfo.h 8 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/include/M_AutoDiagnosisManager/DiagnosisInfo.h 29 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewRecipeEditor/ReviewRecipeEditorDlg.cpp
@@ -1,5 +1,5 @@
// ReviewRecipeEditorDlg.cpp : 구현 파일
// ReviewRecipeEditorDlg.cpp : ���� ����
//
#include "stdafx.h"
@@ -17,7 +17,7 @@
#endif
// CReviewRecipeEditorDlg 대화 상자
// CReviewRecipeEditorDlg ��ȭ ����
CReviewRecipeEditorDlg::CReviewRecipeEditorDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CReviewRecipeEditorDlg::IDD, pParent)
@@ -162,18 +162,18 @@
END_MESSAGE_MAP()
// CReviewRecipeEditorDlg 메시지 처리기
// CReviewRecipeEditorDlg �޽��� ó����
BOOL CReviewRecipeEditorDlg::OnInitDialog()
{
    CDialog::OnInitDialog();
    // 이 대화 상자의 아이콘을 설정합니다. 응용 프로그램의 주 창이 대화 상자가 아닐 경우에는
    //  프레임워크가 이 작업을 자동으로 수행합니다.
    SetIcon(m_hIcon, TRUE);            // 큰 아이콘을 설정합니다.
    SetIcon(m_hIcon, FALSE);        // 작은 아이콘을 설정합니다.
    // �� ��ȭ ������ �������� �����մϴ�. ���� ���α׷��� �� â�� ��ȭ ���ڰ� �ƴ� ��쿡��
    //  �����ӿ�ũ�� �� �۾��� �ڵ����� �����մϴ�.
    SetIcon(m_hIcon, TRUE);            // ū �������� �����մϴ�.
    SetIcon(m_hIcon, FALSE);        // ���� �������� �����մϴ�.
    // TODO: 여기에 추가 초기화 작업을 추가합니다.
    // TODO: ���⿡ �߰� �ʱ�ȭ �۾��� �߰��մϴ�.
    //m_bReviewSystemPC = IsReviewSystemPC();
    m_bReviewSystemPC = TRUE;
    pReviewRecipeEditor = this;
@@ -189,29 +189,29 @@
    InitRecipeListGridControl();
    RefreshRecipeList();
    return TRUE;  // 포커스를 컨트롤에 설정하지 않으면 TRUE를 반환합니다.
    return TRUE;  // ��Ŀ���� ��Ʈ�ѿ� �������� ������ TRUE�� ��ȯ�մϴ�.
}
// 대화 상자에 최소화 단추를 추가할 경우 아이콘을 그리려면
//  아래 코드가 필요합니다. 문서/뷰 모델을 사용하는 MFC 응용 프로그램의 경우에는
//  프레임워크에서 이 작업을 자동으로 수행합니다.
// ��ȭ ���ڿ� �ּ�ȭ ���߸� �߰��� ��� �������� �׸�����
//  �Ʒ� �ڵ尡 �ʿ��մϴ�. ����/�� ���� ����ϴ� MFC ���� ���α׷��� ��쿡��
//  �����ӿ�ũ���� �� �۾��� �ڵ����� �����մϴ�.
void CReviewRecipeEditorDlg::OnPaint()
{
    if (IsIconic())
    {
        CPaintDC dc(this); // 그리기를 위한 디바이스 컨텍스트
        CPaintDC dc(this); // �׸��⸦ ���� ����̽� ���ؽ�Ʈ
        SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
        // 클라이언트 사각형에서 아이콘을 가운데에 맞춥니다.
        // Ŭ���̾�Ʈ �簢������ �������� ����� ����ϴ�.
        int cxIcon = GetSystemMetrics(SM_CXICON);
        int cyIcon = GetSystemMetrics(SM_CYICON);
        CRect rect;
        GetClientRect(&rect);
        int x = (rect.Width() - cxIcon + 1) / 2;
        int y = (rect.Height() - cyIcon + 1) / 2;    
        // 아이콘을 그립니다.
        // �������� �׸��ϴ�.
        dc.DrawIcon(x, y, m_hIcon);
    }
    else
@@ -220,8 +220,8 @@
    }
}
// 사용자가 최소화된 창을 끄는 동안에 커서가 표시되도록 시스템에서
//  이 함수를 호출합니다.
// ����ڰ� �ּ�ȭ�� â�� ��� ���ȿ� Ŀ���� ǥ�õǵ��� �ý��ۿ���
//  �� �Լ��� ȣ���մϴ�.
HCURSOR CReviewRecipeEditorDlg::OnQueryDragIcon()
{
    return static_cast<HCURSOR>(m_hIcon);
@@ -230,7 +230,7 @@
void CReviewRecipeEditorDlg::OnBnClickedButtonReviewRcpEditorCreate()
{
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
    // TODO: ���⿡ ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�.
    BOOL bUseRecipeInfo = FALSE;
    int nIdx;
    CString strRecipeName, strNewRecipeName, strMessage;
@@ -240,7 +240,7 @@
    if(cellID.row > 0 && cellID.col > 0)
    {
        strRecipeName = m_ctrlGridRecipeList.GetItemText(cellID.row, 1);
        strMessage.Format(_T("Do you want to create new recipe using %s recipe information?"), strRecipeName);//_T("%s 레시피 정보를 이용하여 생성하시겠습니까?"), strRecipeName);
        strMessage.Format(_T("Do you want to create new recipe using %s recipe information?"), strRecipeName);//_T("%s ������ ������ �̿��Ͽ� �����Ͻðڽ��ϱ�?"), strRecipeName);
        //if (IDYES == AfxMessageBox(strMessage, MB_YESNO | MB_ICONQUESTION))
        //{
@@ -268,11 +268,11 @@
        if(nIdx != -1)
        {
            strTemp = strTemp.Mid(nIdx + 1);
            strNewPath.Format(_T("\\\\%s\\C\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp);
            strNewPath.Format(_T("\\\\%s\\D\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp); //210805
        }
        else
        {
            strNewPath.Format(_T("\\\\%s\\C\\DIT_Review\\Recipe\\%s.rcp"), NETIP_A2E_REVIEW_SYSTEM, strNewRecipeName);
            strNewPath.Format(_T("\\\\%s\\D\\DIT_Review\\Recipe\\%s.rcp"), NETIP_A2E_REVIEW_SYSTEM, strNewRecipeName);  //210805
        }
    }
@@ -290,22 +290,22 @@
            if(nIdx != -1)
            {
                strTemp = strTemp.Mid(nIdx + 1);
                strSrcPath.Format(_T("\\\\%s\\C\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp);
                strSrcPath.Format(_T("\\\\%s\\D\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp); //210805
            }
            else
            {
                strSrcPath.Format(_T("\\\\%s\\C\\DIT_Review\\Recipe\\%s.rcp"), NETIP_A2E_REVIEW_SYSTEM, strRecipeName);
                strSrcPath.Format(_T("\\\\%s\\D\\DIT_Review\\Recipe\\%s.rcp"), NETIP_A2E_REVIEW_SYSTEM, strRecipeName);  //210805
            }
        }
            
        if(CopyFile(strSrcPath, strNewPath, FALSE) == FALSE)
        {
            strMessage.Format(_T("Fail to create %s recipe"));//_T("%s 레시피 생성 실패!"));
            strMessage.Format(_T("Fail to create %s recipe"));//_T("%s ������ ���� ����!"));
            AfxMessageBox(strMessage);
        }
        else
        {
            //LYW_#3344_CF AOI Review Config File 백업 기능 개선 ADD START
            //LYW_#3344_CF AOI Review Config File ��� ��� ���� ADD START
            CString strBackupPath = _REVIEW_RECIPE_BACKUP_PATH_CPJT;
            CreateDirectory(strBackupPath, NULL);
@@ -316,9 +316,9 @@
            strSource.Format(_T("%s\\%s.rcp"), _REVIEW_RECIPE_PATH_, strNewRecipeName);
            strDest.Format(_T("%s\\%s.rcp"), strBackupPath, strNewRecipeName);
            CopyFile(strSource, strDest, TRUE);
            //LYW_#3344_CF AOI Review Config File 백업 기능 개선 ADD END
            //LYW_#3344_CF AOI Review Config File ��� ��� ���� ADD END
            // [2017:4:17]-[WEZASW] : CIM(Recipe) 보고 항목 추가.
            // [2017:4:17]-[WEZASW] : CIM(Recipe) ���� �׸� �߰�.
            COPYDATA_RECIPE2REV copyData;
            copyData.Message = MsgRecipe2Rev_RecipeCreate;
            copyData.nPPID = _ttoi(strNewRecipeName);
@@ -331,12 +331,12 @@
        if(file.Open(strNewPath, CFile::modeCreate | CFile::modeWrite) == FALSE)
        {
            strMessage.Format(_T("Fail to create %s recipe"));//_T("%s 레시피 생성 실패!"));
            strMessage.Format(_T("Fail to create %s recipe"));//_T("%s ������ ���� ����!"));
            AfxMessageBox(strMessage);
        }
        else
        {
            strMessage.Format(_T("Please select the default file!"));//_T("먼저 기본 파일을 선택해주세요!"));
            strMessage.Format(_T("Please select the default file!"));//_T("���� �⺻ ������ �������ּ���!"));
            AfxMessageBox(strMessage);                
        }
@@ -368,7 +368,7 @@
void CReviewRecipeEditorDlg::OnBnClickedButtonReviewRcpEditorDelete()
{
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
    // TODO: ���⿡ ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�.
    int nIdx;
    CString strRecipeName, strPath, strMessage, strTemp;
    CCellID cellID = m_ctrlGridRecipeList.GetFocusCell();
@@ -389,20 +389,20 @@
            if (nIdx != -1)
            {
                strTemp = strTemp.Mid(nIdx + 1);
                strPath.Format(_T("\\\\%s\\C\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp);
                strPath.Format(_T("\\\\%s\\D\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp); //210805
            }
            else
            {
                strPath.Format(_T("\\\\%s\\C\\DIT_Review\\Recipe\\%s.rcp"), NETIP_A2E_REVIEW_SYSTEM, strRecipeName);
                strPath.Format(_T("\\\\%s\\D\\DIT_Review\\Recipe\\%s.rcp"), NETIP_A2E_REVIEW_SYSTEM, strRecipeName); //210805
            }
        }
        //_T("%s 레시피를 삭제하시겠습니까?"), strRecipeName);
        //_T("%s �����Ǹ� �����Ͻðڽ��ϱ�?"), strRecipeName);
        strMessage.Format(_T("Do you want to delete %s recipe?"), strRecipeName);
        if (IDYES == AfxMessageBox(strMessage, MB_YESNO | MB_ICONQUESTION))
        {
            // [2017:5:20]-[WEZASW] : 현재 적용된 Recipe(PPID)는 삭제 금지 요청.
            // [2017:5:20]-[WEZASW] : ���� ����� Recipe(PPID)�� ���� ���� ��û.
            if (strRecipeName.Compare(m_strCurrentRecipeName) == 0)
            {
                strMessage.Format(_T("Currently applied Recipe(%s) can not be deleted!"), strRecipeName);
@@ -411,16 +411,16 @@
            }
            DeleteFile(strPath);
            //LYW_#3344_CF AOI Review Config File 백업 기능 개선 ADD START
            //LYW_#3344_CF AOI Review Config File ��� ��� ���� ADD START
            CString strBackupPath = _REVIEW_RECIPE_BACKUP_PATH_CPJT;
            CString strDest;
            strDest.Format(_T("%s\\%s.rcp"), strBackupPath, strRecipeName);
            DeleteFile(strDest);
            //LYW_#3344_CF AOI Review Config File 백업 기능 개선 ADD END
            //LYW_#3344_CF AOI Review Config File ��� ��� ���� ADD END
            // [2017:4:17]-[WEZASW] : CIM(Recipe) 보고 항목 추가.
            // [2017:4:17]-[WEZASW] : CIM(Recipe) ���� �׸� �߰�.
            COPYDATA_RECIPE2REV copyData;
            copyData.Message = MsgRecipe2Rev_RecipeDelete;
            copyData.nPPID = _ttoi(strRecipeName);
@@ -429,7 +429,7 @@
    }
    else
    {
        AfxMessageBox(_T("Please select recipe."));//_T("레시피를 선택하세요."));
        AfxMessageBox(_T("Please select recipe."));//_T("�����Ǹ� �����ϼ���."));
    }
    RefreshRecipeList();
@@ -442,7 +442,7 @@
void CReviewRecipeEditorDlg::OnBnClickedButtonReviewRcpEditorLoad()
{
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
    // TODO: ���⿡ ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�.
    BOOL bReturn;
    CString strRecipeName;
    CCellID cellID = m_ctrlGridRecipeList.GetFocusCell();
@@ -456,7 +456,7 @@
        {
            m_strCurrentRecipeName = strRecipeName;
            // [2017:4:17]-[WEZASW] : CIM(Recipe) 보고 항목 추가.
            // [2017:4:17]-[WEZASW] : CIM(Recipe) ���� �׸� �߰�.
            COPYDATA_RECIPE2REV copyData;
            copyData.Message = MsgRecipe2Rev_RecipeChange;
            copyData.nPPID = _ttoi(m_strCurrentRecipeName);
@@ -471,7 +471,7 @@
    }
    else
    {
        AfxMessageBox(_T("Please select recipe."));//_T("레시피를 선택하세요."));
        AfxMessageBox(_T("Please select recipe."));//_T("�����Ǹ� �����ϼ���."));
    }
}
@@ -517,7 +517,7 @@
        if (bRet)
        {
            // [2017:4:17]-[WEZASW] : CIM(Recipe) 보고 항목 추가.
            // [2017:4:17]-[WEZASW] : CIM(Recipe) ���� �׸� �߰�.
            COPYDATA_RECIPE2REV copyData;
            copyData.Message = MsgRecipe2Rev_RecipeModify;
            copyData.nPPID = _ttoi(RecipeName);
@@ -540,14 +540,14 @@
            strDest.Format(_T("%s\\%s_%s.rcp"), strBackupPath, RecipeName, strBackupFile);
            CopyFile(strSource, strDest, TRUE);
            //LYW_#3344_CF AOI Review Config File 백업 기능 개선 ADD START
            //LYW_#3344_CF AOI Review Config File ��� ��� ���� ADD START
            strBackupPath = _REVIEW_RECIPE_BACKUP_PATH_CPJT;
            CreateDirectory(strBackupPath, NULL);
            strSource.Format(_T("%s\\%s.rcp"), _REVIEW_RECIPE_PATH_, RecipeName);
            strDest.Format(_T("%s\\%s.rcp"), strBackupPath, RecipeName);
            CopyFile(strSource, strDest, TRUE);
            //LYW_#3344_CF AOI Review Config File 백업 기능 개선 ADD END
            //LYW_#3344_CF AOI Review Config File ��� ��� ���� ADD END
            strMessage.Format(_T("Complete to save %s recipe!"), RecipeName);
            //AfxMessageBox(strMessage);
@@ -567,7 +567,7 @@
void CReviewRecipeEditorDlg::OnBnClickedButtonReviewRcpEditorSave()
{
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
    // TODO: ���⿡ ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�.
    CString strMessage;
    if (m_strCurrentRecipeName.IsEmpty())
@@ -584,7 +584,7 @@
        if (bRet)
        {
            // [2017:4:17]-[WEZASW] : CIM(Recipe) 보고 항목 추가.
            // [2017:4:17]-[WEZASW] : CIM(Recipe) ���� �׸� �߰�.
            COPYDATA_RECIPE2REV copyData;
            copyData.Message = MsgRecipe2Rev_RecipeModify;
            copyData.nPPID = _ttoi(m_strCurrentRecipeName);
@@ -607,14 +607,14 @@
            strDest.Format(_T("%s\\%s_%s.rcp"), strBackupPath, m_strCurrentRecipeName, strBackupFile);
            CopyFile(strSource, strDest, TRUE);
            //LYW_#3344_CF AOI Review Config File 백업 기능 개선 ADD START
            //LYW_#3344_CF AOI Review Config File ��� ��� ���� ADD START
            strBackupPath = _REVIEW_RECIPE_BACKUP_PATH_CPJT;
            CreateDirectory(strBackupPath, NULL);
            strSource.Format(_T("%s\\%s.rcp"), _REVIEW_RECIPE_PATH_, m_strCurrentRecipeName);
            strDest.Format(_T("%s\\%s.rcp"), strBackupPath, m_strCurrentRecipeName);
            CopyFile(strSource, strDest, FALSE);
            //LYW_#3344_CF AOI Review Config File 백업 기능 개선 ADD END
            //LYW_#3344_CF AOI Review Config File ��� ��� ���� ADD END
            strMessage.Format(_T("Complete to save %s recipe!"), m_strCurrentRecipeName);
            AfxMessageBox(strMessage);
@@ -641,7 +641,7 @@
void CReviewRecipeEditorDlg::OnBnClickedButtonReviewrcpEditorExit()
{
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
    // TODO: ���⿡ ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�.
    DestroyWindow();
}
@@ -706,15 +706,15 @@
void CReviewRecipeEditorDlg::InitTabControl()
{
    int nIdx = 0;
    m_ctrlTabMain.InsertItem(nIdx++, _T("Common"));            //_T("  공통  "));
    m_ctrlTabMain.InsertItem(nIdx++, _T("Review"));            //_T("  리뷰  "));
    m_ctrlTabMain.InsertItem(nIdx++, _T("Common"));            //_T("  ����  "));
    m_ctrlTabMain.InsertItem(nIdx++, _T("Review"));            //_T("  ����  "));
    m_ctrlTabMain.InsertItem(nIdx++, _T("WSI"));            //_T("  WSI  "));
    m_ctrlTabMain.InsertItem(nIdx++, _T("Align"));            //_T(" 얼라인 "));
    m_ctrlTabMain.InsertItem(nIdx++, _T("Judgement"));        //_T(" 판정  "));
    m_ctrlTabMain.InsertItem(nIdx++, _T("Align"));            //_T(" ����� "));
    m_ctrlTabMain.InsertItem(nIdx++, _T("Judgement"));        //_T(" ����  "));
    // 미사용으로 제외
//    m_ctrlTabMain.InsertItem(nIdx++, _T("Measure"));        //_T("  측정  "));
//    m_ctrlTabMain.InsertItem(nIdx++, _T("Finding Defect"));    //_T(" 결함찾기 "));
    // �̻������ ����
//    m_ctrlTabMain.InsertItem(nIdx++, _T("Measure"));        //_T("  ����  "));
//    m_ctrlTabMain.InsertItem(nIdx++, _T("Finding Defect"));    //_T(" ����ã�� "));
    //m_ctrlTabMain.InsertItem(nIdx++, _T("Glass"));            //_T(" Glass Info "));
}
@@ -750,19 +750,19 @@
    Item.mask = GVIF_TEXT;
    Item.row = nRowIdx;
    Item.col = nColIdx++;
    strTemp.Format(_T("Index"));//_T("인덱스"));
    strTemp.Format(_T("Index"));//_T("�ε���"));
    Item.strText = strTemp;
    m_ctrlGridRecipeList.SetItem(&Item);
    Item.row = nRowIdx;
    Item.col = nColIdx++;
    strTemp.Format(_T("Recipe Name"));//_T("레시피 이름"));
    strTemp.Format(_T("Recipe Name"));//_T("������ �̸�"));
    Item.strText = strTemp;
    m_ctrlGridRecipeList.SetItem(&Item);
    Item.row = nRowIdx;
    Item.col = nColIdx++;
    strTemp.Format(_T("Last Modified Date"));//_T("최종 수정 날짜"));
    strTemp.Format(_T("Last Modified Date"));//_T("���� ���� ��¥"));
    Item.strText = strTemp;
    m_ctrlGridRecipeList.SetItem(&Item);
}
@@ -787,7 +787,7 @@
        for(i = 0; i < nRecipeCount; i++)
        {
            //레시피 인덱스
            //������ �ε���
            nColIdx = 0;
            Item.mask = GVIF_TEXT;
            Item.row = nRowIdx;
@@ -796,13 +796,13 @@
            Item.strText = strTemp;
            m_ctrlGridRecipeList.SetItem(&Item);
            //레시피 이름
            //������ �̸�
            nColIdx++;
            strTemp = strArrayRecipeName.GetAt(i);
            m_ctrlGridRecipeList.SetItemText(nRowIdx, nColIdx, strTemp);
            m_ctrlGridRecipeList.SetItemState(nRowIdx, nColIdx, GVIS_READONLY);
            //최종 수정 날짜
            //���� ���� ��¥
            nColIdx++;
            strTemp = strArrayLastWriteTime.GetAt(i);
            m_ctrlGridRecipeList.SetItemText(nRowIdx, nColIdx, strTemp);
@@ -837,11 +837,11 @@
        if(nIdx != -1)
        {
            strTemp = strTemp.Mid(nIdx + 1);
            strSearchPath.Format(_T("\\\\%s\\C\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp);
            strSearchPath.Format(_T("\\\\%s\\D\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp);
        }
        else
        {
            strSearchPath.Format(_T("\\\\%s\\C\\DIT_Review\\Recipe\\*.rcp"), NETIP_A2E_REVIEW_SYSTEM);
            strSearchPath.Format(_T("\\\\%s\\D\\DIT_Review\\Recipe\\*.rcp"), NETIP_A2E_REVIEW_SYSTEM); //210805
        }
    }
@@ -902,12 +902,12 @@
        if(nIdx != -1)
        {
            strTemp = strTemp.Mid(nIdx + 1);
            strPath.Format(_T("\\\\%s\\C\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp);
            strPath.Format(_T("\\\\%s\\D\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp);
        }
        else
        {
            strPath.Format(_T("\\\\%s\\C\\DIT_Review\\Recipe\\%s.rcp"), NETIP_A2E_REVIEW_SYSTEM, strRecipeName);
        }
            strPath.Format(_T("\\\\%s\\D\\DIT_Review\\Recipe\\%s.rcp"), NETIP_A2E_REVIEW_SYSTEM, strRecipeName);//210805
        }
    }
    CMacroFile macroFile;
@@ -995,11 +995,11 @@
        if(nIdx != -1)
        {
            strTemp = strTemp.Mid(nIdx + 1);
            strPath.Format(_T("\\\\%s\\C\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp);
            strPath.Format(_T("\\\\%s\\D\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp);
        }
        else
        {
            strPath.Format(_T("\\\\%s\\C\\DIT_Review\\Recipe\\%s.rcp"), NETIP_A2E_REVIEW_SYSTEM, strRecipeName);
            strPath.Format(_T("\\\\%s\\D\\DIT_Review\\Recipe\\%s.rcp"), NETIP_A2E_REVIEW_SYSTEM, strRecipeName); //210805
        }
    }
    
@@ -1069,11 +1069,11 @@
        if(nIdx != -1)
        {
            strTemp = strTemp.Mid(nIdx + 1);
            strPath.Format(_T("\\\\%s\\C\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp);
            strPath.Format(_T("\\\\%s\\D\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp);
        }
        else
        {
            strPath.Format(_T("\\\\%s\\C\\DIT_Review\\ReviewServerConfig\\SystemSetting.cfg"), NETIP_A2E_REVIEW_SYSTEM);
            strPath.Format(_T("\\\\%s\\D\\DIT_Review\\ReviewServerConfig\\SystemSetting.cfg"), NETIP_A2E_REVIEW_SYSTEM); //210805
        }
    }
@@ -1106,12 +1106,12 @@
void CReviewRecipeEditorDlg::OnTcnSelchangeTabReviewRcpEditorMainTab(NMHDR *pNMHDR, LRESULT *pResult)
{
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
    // TODO: ���⿡ ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�.
    RecipeMainTab nTabIdx;
    nTabIdx = (RecipeMainTab)m_ctrlTabMain.GetCurSel();
    // [2017:1:25]-[WEZASW] : SystemMachine_B7E_WSI 설비 분리(WSI 유/무)
    // [2017:1:25]-[WEZASW] : SystemMachine_B7E_WSI ���� �и�(WSI ��/��)
    switch(GetCurrentTapIndex(nTabIdx))
    {
    case COMMON_TAB:
@@ -1217,8 +1217,8 @@
}
void CReviewRecipeEditorDlg::OnCancel()
{
    // TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
    //_T("레시피 에디터 프로그램을 종료하시겠습니까?"), MB_YESNO | MB_ICONQUESTION))
    // TODO: ���⿡ Ư��ȭ�� �ڵ带 �߰� ��/�Ǵ� �⺻ Ŭ������ ȣ���մϴ�.
    //_T("������ ������ ���α׷��� �����Ͻðڽ��ϱ�?"), MB_YESNO | MB_ICONQUESTION))
    if (IDNO == AfxMessageBox(_T("Do you want to exit recipe editor program?"), MB_YESNO | MB_ICONERROR))
    {
        return;
@@ -1344,7 +1344,7 @@
void CReviewRecipeEditorDlg::OnStnClickedStaticSelectRcipe()
{
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
    // TODO: ���⿡ ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�.
}
@@ -1447,7 +1447,7 @@
    }
    else
    {
        AfxMessageBox(_T("Please select recipe."));//_T("레시피를 선택하세요."));
        AfxMessageBox(_T("Please select recipe."));//_T("�����Ǹ� �����ϼ���."));
    }
    return bSuccess;
@@ -1457,7 +1457,7 @@
{
    BOOL bSuccess = TRUE;
    // 중복 Recipe 생성 금지.
    // �ߺ� Recipe ���� ����.
    CFileFind finder;
    CString strRecipeFile;
    strRecipeFile.Format(_T("%s\\%s.rcp"), _REVIEW_RECIPE_PATH_, strRecipeName);
ReviewSystem/ReviewRecipeEditor/stdafx.h
@@ -1,7 +1,7 @@
// stdafx.h : 자주 사용하지만 자주 변경되지는 않는
// 표준 시스템 포함 파일 및 프로젝트 관련 포함 파일이
// 들어 있는 포함 파일입니다.
// stdafx.h : ���� ��������� ���� ��������� �ʴ�
// ǥ�� �ý��� ���� ���� �� ������Ʈ ���� ���� ������
// ��� �ִ� ���� �����Դϴ�.
#pragma once
@@ -10,37 +10,42 @@
#endif
#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN            // 거의 사용되지 않는 내용은 Windows 헤더에서 제외합니다.
#define VC_EXTRALEAN            // ���� ������ �ʴ� ������ Windows ������� �����մϴ�.
#endif
#include "targetver.h"
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS      // 일부 CString 생성자는 명시적으로 선언됩니다.
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS      // �Ϻ� CString �����ڴ� ��������� ����˴ϴ�.
// MFC의 공통 부분과 무시 가능한 경고 메시지에 대한 숨기기를 해제합니다.
// MFC�� ���� �κа� ���� ������ ��� �޽����� ���� ����⸦ �����մϴ�.
#define _AFX_ALL_WARNINGS
#include <afxwin.h>         // MFC 핵심 및 표준 구성 요소입니다.
#include <afxext.h>         // MFC 확장입니다.
#include <afxwin.h>         // MFC �ٽ� �� ǥ�� ���� ����Դϴ�.
#include <afxext.h>         // MFC Ȯ���Դϴ�.
#include <afxdisp.h>        // MFC 자동화 클래스입니다.
#include <afxdisp.h>        // MFC �ڵ�ȭ Ŭ�����Դϴ�.
#ifndef _AFX_NO_OLE_SUPPORT
#include <afxdtctl.h>           // Internet Explorer 4 공용 컨트롤에 대한 MFC 지원입니다.
#include <afxdtctl.h>           // Internet Explorer 4 ���� ��Ʈ�ѿ� ���� MFC �����Դϴ�.
#endif
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h>             // Windows 공용 컨트롤에 대한 MFC 지원입니다.
#include <afxcmn.h>             // Windows ���� ��Ʈ�ѿ� ���� MFC �����Դϴ�.
#endif // _AFX_NO_AFXCMN_SUPPORT
#include <afxcontrolbars.h>     // MFC의 리본 및 컨트롤 막대 지원
#include <afxcontrolbars.h>     // MFC�� ���� �� ��Ʈ�� ���� ����
#include <afxinet.h>
#include <afxcontrolbars.h>
#define _REVIEW_BASE_PATH_                            _T("C:\\DIT_Review")
#define _REVIEW_RECIPE_PATH_                        _T("C:\\DIT_Review\\Recipe")
#define _REVIEW_RECIPE_BACKUP_PATH_                    _T("C:\\DIT_Review\\Recipe\\Backup")
#define _REVIEW_RECIPE_LOGIN_LOG_PATH_                _T("C:\\DIT_Review\\Recipe\\LoginLog")
#define _REVIEW_SERVER_SYSTEM_SETTING_FILE_PATH_    _T("C:\\DIT_Review\\ReviewServerConfig\\SystemSetting.cfg")
//#define _REVIEW_BASE_PATH_                            _T("C:\\DIT_Review")
//#define _REVIEW_RECIPE_PATH_                        _T("C:\\DIT_Review\\Recipe")
//#define _REVIEW_RECIPE_BACKUP_PATH_                    _T("C:\\DIT_Review\\Recipe\\Backup")
//#define _REVIEW_RECIPE_LOGIN_LOG_PATH_                _T("C:\\DIT_Review\\Recipe\\LoginLog")
//#define _REVIEW_SERVER_SYSTEM_SETTING_FILE_PATH_    _T("C:\\DIT_Review\\ReviewServerConfig\\SystemSetting.cfg")
#define _REVIEW_BASE_PATH_                            _T("D:\\DIT_Review")  //210805
#define _REVIEW_RECIPE_PATH_                        _T("D:\\DIT_Review\\Recipe")
#define _REVIEW_RECIPE_BACKUP_PATH_                    _T("D:\\DIT_Review\\Recipe\\Backup")
#define _REVIEW_RECIPE_LOGIN_LOG_PATH_                _T("D:\\DIT_Review\\Recipe\\LoginLog")
#define _REVIEW_SERVER_SYSTEM_SETTING_FILE_PATH_    _T("D:\\DIT_Review\\ReviewServerConfig\\SystemSetting.cfg")
#define _REVIEW_RECIPE_BACKUP_PATH_CPJT                _T("\\\\126.100.100.5\\d\\DIT Back up\\DIT Review\\Recipe")
#define _REVIEW_SERVER_SYSTEM_SETTING_BACKUP_PATH_CPJT    _T("\\\\126.100.100.5\\d\\DIT Back up\\DIT Review\\ReviewServerConfig")
@@ -72,19 +77,19 @@
#define    COPYDATA_RECIPEEDITOR2REVIEWSYSTEM            1600
// [2017:4:17]-[WEZASW] : CIM(Recipe) 보고 항목 추가.
// [2017:4:17]-[WEZASW] : CIM(Recipe) ���� �׸� �߰�.
enum MsgRecipe2Rev
{
    MsgRecipe2Rev_None = -1,
    MsgRecipe2Rev_StandardCameraGlassPos,
    MsgRev2Recipe_StandardCameraGlassPos,
    MsgRecipe2Rev_RecipeCreate,                    // Recipe(PPID) 추가
    MsgRecipe2Rev_RecipeCreate,                    // Recipe(PPID) �߰�
    MsgRev2Recipe_RecipeCreate,
    MsgRecipe2Rev_RecipeChange,                    // Recipe(PPID) 변경
    MsgRecipe2Rev_RecipeChange,                    // Recipe(PPID) ����
    MsgRev2Recipe_RecipeChange,
    MsgRecipe2Rev_RecipeDelete,                    // Recipe(PPID) 삭제
    MsgRecipe2Rev_RecipeDelete,                    // Recipe(PPID) ����
    MsgRev2Recipe_RecipeDelete,
    MsgRecipe2Rev_RecipeModify,                    // Recipe(PPID) Parameter 수정
    MsgRecipe2Rev_RecipeModify,                    // Recipe(PPID) Parameter ����
    MsgRev2Recipe_RecipeModify
};
ReviewSystem/ReviewSystem/CameraControlAlign.cpp
@@ -5,7 +5,8 @@
#include "CHReviewSetting/SystemInfo.h"
#include "CHReviewRecipe/RsRcpAlignInfo.h"
#define ALIGN_TEMPLATE_PATH _T("C:\\DIT_Review\\Recipe\\AlignImage\\")
#define ALIGN_TEMPLATE_PATH _T("D:\\DIT_Review\\Recipe\\AlignImage\\")
//#define ALIGN_TEMPLATE_PATH _T("C:\\DIT_Review\\Recipe\\AlignImage\\") //210805
using namespace CHImageControls;
ReviewSystem/ReviewSystem/CameraControlReview.cpp
@@ -207,11 +207,13 @@
    CString strPath =m_pRCC2P->IRCC2P_GetTotalPitchImageName();
    if(strPath == _T("")){
        strPath = _T("C:\\DIT_Review\\Recipe\\AlignImage\\ReviewAlign.bmp");
        strPath = _T("D:\\DIT_Review\\Recipe\\AlignImage\\ReviewAlign.bmp");
        //strPath = _T("C:\\DIT_Review\\Recipe\\AlignImage\\ReviewAlign.bmp");  //210805
    }
    else
    {
        strPath = _T("C:\\DIT_Review\\Recipe\\AlignImage\\")+strPath;
        strPath = _T("D:\\DIT_Review\\Recipe\\AlignImage\\") + strPath;
        //strPath = _T("C:\\DIT_Review\\Recipe\\AlignImage\\")+strPath; //210805
    }
    
ReviewSystem/ReviewSystem/DlgReviewOffSetTool.h
@@ -21,11 +21,11 @@
//enum MotorOringTYPE {
//    LEFT_Top = 0, RIGHT_TOP,LEFT_BOTTOM, RIGHT_BOTTOM
//};
#define    REVIEW_OFFSET_CONFIGFILE_PATH _T("C:\\DIT_Review\\ReviewServerConfig\\")
#define    REVIEW_OFFSET_CONFIGFILE_PATH _T("D:\\DIT_Review\\ReviewServerConfig\\") //210805
#define    REVIEW_OFFSET_CONFIGFILE_NAME _T("ReviewOffSet.cfg")
#define REVIEW_OFFSET_CONFIGFILE_FULL_PATHNAME _T("C:\\DIT_Review\\ReviewServerConfig\\ReviewOffSet.cfg")
#define REVIEW_OFFSET_CONFIGFILE_FULL_PATHNAME _T("D:\\DIT_Review\\ReviewServerConfig\\ReviewOffSet.cfg")
#define    REVIEW_OFFSET_BACKUP_FORDER_NAME _T("OffsetBackup")
#define    REVIEW_OFFSET_BACKUP_FORDER_PATH _T("C:\\DIT_Review\\ReviewServerConfig\\OffsetBackup\\")
#define    REVIEW_OFFSET_BACKUP_FORDER_PATH _T("D:\\DIT_Review\\ReviewServerConfig\\OffsetBackup\\")
// CDlgDefocusList 대화 상자입니다.
interface IDialogReviewOffSet2Parent
ReviewSystem/ReviewSystem/FileUploadControl.cpp
@@ -179,7 +179,7 @@
// 
//     CCommendParam *pParam = NULL;
// 
//     //FTPUpLoad이면 반환
//     //FTPUpLoad�̸� ��ȯ
//     if( bFTPUpload )
//         return FALSE;
// 
@@ -301,7 +301,8 @@
    if (NULL == hWnd)
    {
        g_pLog->DisplayMessage(_T("Find FTPUploader Program : Fail."));
        StartFTPUploader(_T("C:\\DIT_Review"));
        StartFTPUploader(_T("D:\\DIT_Review"));  //210805
    }
    else
    {
@@ -314,7 +315,7 @@
        else
        {
            g_pLog->DisplayMessage(_T("Send Data to FTPUploader : Fail."));
            RestartFTPUploader(_T("C:\\DIT_Review")); //A2E FTPUploader
            RestartFTPUploader(_T("D:\\DIT_Review")); //A2E FTPUploader //210805
            bRet = FALSE;
        }
    }
ReviewSystem/ReviewSystem/MainFrm.cpp
@@ -451,9 +451,9 @@
#define strScript "RESTART^AFControl.exe^C:\\AFControl\\program\\AFControl.exe"
    
    CFile file;
    if( FALSE == file.Open(_T("C:\\DIT_Review\\MakeScript.TSF"),CFile::modeCreate | CFile::modeWrite) )
    if( FALSE == file.Open(_T("D:\\DIT_Review\\MakeScript.TSF"),CFile::modeCreate | CFile::modeWrite) ) //210805
    {
        g_pLog->DisplayMessage(_T("File[C:\\DIT_Review\\MakeScript.TSF] Create Fail!!"));
        g_pLog->DisplayMessage(_T("File[D:\\DIT_Review\\MakeScript.TSF] Create Fail!!")); //210805
        return;
    }
@@ -485,7 +485,7 @@
    CString strTarget;
    strTarget.Format(_T("\\\\126.100.100.220\\c\\RemoteTaskMgr\\T\\CopyScript.TSF"));
    
    BOOL bRet = CopyFile(_T("C:\\DIT_Review\\MakeScript.TSF"),strTarget,FALSE);
    BOOL bRet = CopyFile(_T("D:\\DIT_Review\\MakeScript.TSF"),strTarget,FALSE); //210805
    if(bRet == FALSE)
        g_pLog->DisplayMessage(_T("[%s]Send Script Fail!"), strTarget);
    /////////////////////////////////////
ReviewSystem/ReviewSystem/stdafx.h
@@ -77,20 +77,34 @@
#define ID_TIMER_SEND_SIGNAL_ALIVE            (WM_USER + 107)
#define _REVIEW_SERVER_BASE_PATH_                    _T("C:\\DIT_Review")
#define _REVIEW_SERVER_LOG_PATH_                    _T("C:\\DIT_Review\\ReviewServerLog")
#define _REVIEW_RECIPE_PATH_                        _T("C:\\DIT_Review\\Recipe")
#define _REVIEW_REF_RECIPE_PATH_                    _T("C:\\DIT_Review\\Recipe\\Reference")
#define _REVIEW_SERVER_CONFIG_PATH_                    _T("C:\\DIT_Review\\ReviewServerConfig")
#define _REVIEW_SERVER_SYSTEM_SETTING_FILE_PATH_    _T("C:\\DIT_Review\\ReviewServerConfig\\SystemSetting.cfg")
#define _REVIEW_SERVER_BASE_PATH_                    _T("D:\\DIT_Review") //210805
#define _REVIEW_SERVER_LOG_PATH_                    _T("D:\\DIT_Review\\ReviewServerLog")
#define _REVIEW_RECIPE_PATH_                        _T("D:\\DIT_Review\\Recipe")
#define _REVIEW_REF_RECIPE_PATH_                    _T("D:\\DIT_Review\\Recipe\\Reference")
#define _REVIEW_SERVER_CONFIG_PATH_                    _T("D:\\DIT_Review\\ReviewServerConfig")
#define _REVIEW_SERVER_SYSTEM_SETTING_FILE_PATH_    _T("D:\\DIT_Review\\ReviewServerConfig\\SystemSetting.cfg")
#define _SYSTEM_SETTING_TITLE_                        _T("ReviewSystemSetting")
#define _RECIPE_EDITOR_TITLE_                        _T("ReviewRecipeEditor")
#define _REVIEW_LOGIN_LOG_PATH_                        _T("C:\\DIT_Review\\ReviewServerLog\\LoginLog")
#define _REVIEW_REFLOW_RECIPE_PATH_                    _T("C:\\DIT_Review\\Recipe\\Reflow")
#define ALIGN_TEMPLATE_PATH                            _T("C:\\DIT_Review\\Recipe\\AlignImage")
#define _REVIEW_LOGIN_LOG_PATH_                        _T("D:\\DIT_Review\\ReviewServerLog\\LoginLog")
#define _REVIEW_REFLOW_RECIPE_PATH_                    _T("D:\\DIT_Review\\Recipe\\Reflow")
#define ALIGN_TEMPLATE_PATH                            _T("D:\\DIT_Review\\Recipe\\AlignImage")
#define _REVIEW_RECIPE_BACKUP_PATH_CPJT                _T("\\\\126.100.100.5\\d\\DIT Back up\\DIT Review\\Recipe")
#define _REVIEW_SERVER_SYSTEM_SETTING_BACKUP_PATH_CPJT    _T("\\\\126.100.100.5\\d\\DIT Back up\\DIT Review\\ReviewServerConfig")
//#define _REVIEW_SERVER_BASE_PATH_                    _T("C:\\DIT_Review")
//#define _REVIEW_SERVER_LOG_PATH_                    _T("C:\\DIT_Review\\ReviewServerLog")
//#define _REVIEW_RECIPE_PATH_                        _T("C:\\DIT_Review\\Recipe")
//#define _REVIEW_REF_RECIPE_PATH_                    _T("C:\\DIT_Review\\Recipe\\Reference")
//#define _REVIEW_SERVER_CONFIG_PATH_                    _T("C:\\DIT_Review\\ReviewServerConfig")
//#define _REVIEW_SERVER_SYSTEM_SETTING_FILE_PATH_    _T("C:\\DIT_Review\\ReviewServerConfig\\SystemSetting.cfg")
//#define _SYSTEM_SETTING_TITLE_                        _T("ReviewSystemSetting")
//#define _RECIPE_EDITOR_TITLE_                        _T("ReviewRecipeEditor")
//#define _REVIEW_LOGIN_LOG_PATH_                        _T("C:\\DIT_Review\\ReviewServerLog\\LoginLog")
//#define _REVIEW_REFLOW_RECIPE_PATH_                    _T("C:\\DIT_Review\\Recipe\\Reflow")
//#define ALIGN_TEMPLATE_PATH                            _T("C:\\DIT_Review\\Recipe\\AlignImage")
//#define _REVIEW_RECIPE_BACKUP_PATH_CPJT                _T("\\\\126.100.100.5\\d\\DIT Back up\\DIT Review\\Recipe")
//#define _REVIEW_SERVER_SYSTEM_SETTING_BACKUP_PATH_CPJT    _T("\\\\126.100.100.5\\d\\DIT Back up\\DIT Review\\ReviewServerConfig")
#define TOTAL_WINDOW_SIZE_X        1920
#define TOTAL_WINDOW_SIZE_Y        1040
ReviewSystem/ReviewSystemSetting/ReviewSystemSettingDlg.cpp
@@ -1,5 +1,5 @@
// ReviewSystemSettingDlg.cpp : 구현 파일
// ReviewSystemSettingDlg.cpp : ���� ����
//
#include "stdafx.h"
@@ -31,20 +31,20 @@
#endif
// 응용 프로그램 정보에 사용되는 CAboutDlg 대화 상자입니다.
// ���� ���α׷� ������ ���Ǵ� CAboutDlg ��ȭ �����Դϴ�.
class CAboutDlg : public CDialog
{
public:
    CAboutDlg();
// 대화 상자 데이터입니다.
// ��ȭ ���� �������Դϴ�.
    enum { IDD = IDD_ABOUTBOX };
    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 지원입니다.
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV �����Դϴ�.
// 구현입니다.
// �����Դϴ�.
protected:
    DECLARE_MESSAGE_MAP()
};
@@ -62,7 +62,7 @@
END_MESSAGE_MAP()
// CReviewSystemSettingDlg 대화 상자
// CReviewSystemSettingDlg ��ȭ ����
@@ -87,7 +87,8 @@
    m_pNetworkManager = NULL;
    // init Log 
    new CDisplayMessage(_T("C:\\DIT_Review\\ReviewServerConfig\\Log"));
    //new CDisplayMessage(_T("C:\\DIT_Review\\ReviewServerConfig\\Log"));
    new CDisplayMessage(_T("D:\\DIT_Review\\ReviewServerConfig\\Log"));//210805
}
CReviewSystemSettingDlg::~CReviewSystemSettingDlg()
@@ -185,15 +186,15 @@
END_MESSAGE_MAP()
// CReviewSystemSettingDlg 메시지 처리기
// CReviewSystemSettingDlg �޽��� ó����
BOOL CReviewSystemSettingDlg::OnInitDialog()
{
    CDialog::OnInitDialog();
    // 시스템 메뉴에 "정보..." 메뉴 항목을 추가합니다.
    // �ý��� �޴��� "����..." �޴� �׸��� �߰��մϴ�.
    // IDM_ABOUTBOX는 시스템 명령 범위에 있어야 합니다.
    // IDM_ABOUTBOX�� �ý��� ��� ������ �־�� �մϴ�.
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);
@@ -211,12 +212,12 @@
        }
    }
    // 이 대화 상자의 아이콘을 설정합니다. 응용 프로그램의 주 창이 대화 상자가 아닐 경우에는
    //  프레임워크가 이 작업을 자동으로 수행합니다.
    SetIcon(m_hIcon, TRUE);            // 큰 아이콘을 설정합니다.
    SetIcon(m_hIcon, FALSE);        // 작은 아이콘을 설정합니다.
    // �� ��ȭ ������ �������� �����մϴ�. ���� ���α׷��� �� â�� ��ȭ ���ڰ� �ƴ� ��쿡��
    //  �����ӿ�ũ�� �� �۾��� �ڵ����� �����մϴ�.
    SetIcon(m_hIcon, TRUE);            // ū �������� �����մϴ�.
    SetIcon(m_hIcon, FALSE);        // ���� �������� �����մϴ�.
    // TODO: 여기에 추가 초기화 작업을 추가합니다.
    // TODO: ���⿡ �߰� �ʱ�ȭ �۾��� �߰��մϴ�.
    CreateReviewDirectory();
    CreateManager();
    ReadReviewSystemConfigFile();
@@ -225,7 +226,7 @@
    g_pLog->DisplayMessage(_T("SystemSetting is Started!"));
    return TRUE;  // 포커스를 컨트롤에 설정하지 않으면 TRUE를 반환합니다.
    return TRUE;  // ��Ŀ���� ��Ʈ�ѿ� �������� ������ TRUE�� ��ȯ�մϴ�.
}
void CReviewSystemSettingDlg::OnSysCommand(UINT nID, LPARAM lParam)
@@ -241,19 +242,19 @@
    }
}
// 대화 상자에 최소화 단추를 추가할 경우 아이콘을 그리려면
//  아래 코드가 필요합니다. 문서/뷰 모델을 사용하는 MFC 응용 프로그램의 경우에는
//  프레임워크에서 이 작업을 자동으로 수행합니다.
// ��ȭ ���ڿ� �ּ�ȭ ���߸� �߰��� ��� �������� �׸�����
//  �Ʒ� �ڵ尡 �ʿ��մϴ�. ����/�� ���� ����ϴ� MFC ���� ���α׷��� ��쿡��
//  �����ӿ�ũ���� �� �۾��� �ڵ����� �����մϴ�.
void CReviewSystemSettingDlg::OnPaint()
{
    if (IsIconic())
    {
        CPaintDC dc(this); // 그리기를 위한 디바이스 컨텍스트
        CPaintDC dc(this); // �׸��⸦ ���� ����̽� ���ؽ�Ʈ
        SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
        // 클라이언트 사각형에서 아이콘을 가운데에 맞춥니다.
        // Ŭ���̾�Ʈ �簢������ �������� ����� ����ϴ�.
        int cxIcon = GetSystemMetrics(SM_CXICON);
        int cyIcon = GetSystemMetrics(SM_CYICON);
        CRect rect;
@@ -261,7 +262,7 @@
        int x = (rect.Width() - cxIcon + 1) / 2;
        int y = (rect.Height() - cyIcon + 1) / 2;
        // 아이콘을 그립니다.
        // �������� �׸��ϴ�.
        dc.DrawIcon(x, y, m_hIcon);
    }
    else
@@ -270,8 +271,8 @@
    }
}
// 사용자가 최소화된 창을 끄는 동안에 커서가 표시되도록 시스템에서
//  이 함수를 호출합니다.
// ����ڰ� �ּ�ȭ�� â�� ��� ���ȿ� Ŀ���� ǥ�õǵ��� �ý��ۿ���
//  �� �Լ��� ȣ���մϴ�.
HCURSOR CReviewSystemSettingDlg::OnQueryDragIcon()
{
    return static_cast<HCURSOR>(m_hIcon);
@@ -280,7 +281,7 @@
void CReviewSystemSettingDlg::OnTcnSelchangeTabSysSettingMainTab(NMHDR *pNMHDR, LRESULT *pResult)
{
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
    // TODO: ���⿡ ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�.
    SystemMainTab nTabIdx;
    nTabIdx = (SystemMainTab)m_ctrlTabMain.GetCurSel();
@@ -397,12 +398,12 @@
void CReviewSystemSettingDlg::InitTabControl()
{
    int nIdx = 0;
    m_ctrlTabMain.InsertItem(nIdx++, _T("Equipment Setting"));//_T("장비 설정"));
    m_ctrlTabMain.InsertItem(nIdx++, _T("Glass Type Setting"));//_T("글라스 타입 설정"));
    m_ctrlTabMain.InsertItem(nIdx++, _T("Align Setting"));//_T("얼라인 설정"));
    m_ctrlTabMain.InsertItem(nIdx++, _T("Signal Setting"));//_T("Signal 설정"));
    m_ctrlTabMain.InsertItem(nIdx++, _T("Motor Setting"));//_T("모터 설정"));
    m_ctrlTabMain.InsertItem(nIdx++, _T("Network Setting"));//_T("네트워크 설정"));
    m_ctrlTabMain.InsertItem(nIdx++, _T("Equipment Setting"));//_T("��� ����"));
    m_ctrlTabMain.InsertItem(nIdx++, _T("Glass Type Setting"));//_T("�۶� Ÿ�� ����"));
    m_ctrlTabMain.InsertItem(nIdx++, _T("Align Setting"));//_T("����� ����"));
    m_ctrlTabMain.InsertItem(nIdx++, _T("Signal Setting"));//_T("Signal ����"));
    m_ctrlTabMain.InsertItem(nIdx++, _T("Motor Setting"));//_T("���� ����"));
    m_ctrlTabMain.InsertItem(nIdx++, _T("Network Setting"));//_T("��Ʈ��ũ ����"));
}
BOOL CReviewSystemSettingDlg::ReadReviewSystemConfigFile()
@@ -526,7 +527,7 @@
        strBackupFile = strBackupPath + strBackupFile;
        CopyFile(_REVIEW_SERVER_SYSTEM_SETTING_FILE_PATH_, strBackupFile, TRUE);
        //LYW_#3344_CF AOI Review Config File 백업 기능 개선 ADD START
        //LYW_#3344_CF AOI Review Config File ��� ��� ���� ADD START
        strBackupPath = _REVIEW_SERVER_SYSTEM_SETTING_BACKUP_PATH_CPJT;
        CreateDirectory(strBackupPath, NULL);
@@ -535,9 +536,9 @@
        strBackupFile.Format(_T("%s\\SystemSetting.cfg"), strBackupPath);
        CopyFile(_REVIEW_SERVER_SYSTEM_SETTING_FILE_PATH_, strBackupFile, FALSE);
        //LYW_#3344_CF AOI Review Config File 백업 기능 개선 ADD END
        //LYW_#3344_CF AOI Review Config File ��� ��� ���� ADD END
        if (IDNO == AfxMessageBox(_T("Save complete. Do you want to close System Setting program?"), MB_YESNO | MB_ICONQUESTION))//_T("저장 완료되었습니다. 시스템 설정 프로그램을 종료하시겠습니까?"), MB_YESNO | MB_ICONQUESTION))
        if (IDNO == AfxMessageBox(_T("Save complete. Do you want to close System Setting program?"), MB_YESNO | MB_ICONQUESTION))//_T("���� �Ϸ�Ǿ����ϴ�. �ý��� ���� ���α׷��� �����Ͻðڽ��ϱ�?"), MB_YESNO | MB_ICONQUESTION))
        {
            return;
        }
@@ -549,14 +550,14 @@
    }
    else
    {
        AfxMessageBox(_T("Save Fail!"));//_T("저장 실패하였습니다."));
        AfxMessageBox(_T("Save Fail!"));//_T("���� �����Ͽ����ϴ�."));
    }
}
void CReviewSystemSettingDlg::OnBnClickedCancel()
{
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
    if (IDNO == AfxMessageBox(_T("Do you want to close System Setting program?"), MB_YESNO | MB_ICONQUESTION))//_T("시스템 설정 프로그램을 종료하시겠습니까?"), MB_YESNO | MB_ICONQUESTION))
    // TODO: ���⿡ ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�.
    if (IDNO == AfxMessageBox(_T("Do you want to close System Setting program?"), MB_YESNO | MB_ICONQUESTION))//_T("�ý��� ���� ���α׷��� �����Ͻðڽ��ϱ�?"), MB_YESNO | MB_ICONQUESTION))
    {
        return;
    }
@@ -568,7 +569,7 @@
BOOL CReviewSystemSettingDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
    // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
    // TODO: ���⿡ �޽��� ó���� �ڵ带 �߰� ��/�Ǵ� �⺻���� ȣ���մϴ�.
    if (pCopyDataStruct->dwData == COPYDATA_SYSTEMSETTING2REVIEWSYSTEM)
    {
        COPYDATA_SYSTEM2REV* pCopyData = (COPYDATA_SYSTEM2REV*)pCopyDataStruct->lpData;
ReviewSystem/ReviewSystemSetting/stdafx.h
@@ -1,7 +1,7 @@
// stdafx.h : 자주 사용하지만 자주 변경되지는 않는
// 표준 시스템 포함 파일 및 프로젝트 관련 포함 파일이
// 들어 있는 포함 파일입니다.
// stdafx.h : ���� ��������� ���� ��������� �ʴ�
// ǥ�� �ý��� ���� ���� �� ������Ʈ ���� ���� ������
// ��� �ִ� ���� �����Դϴ�.
#pragma once
@@ -10,37 +10,42 @@
#endif
#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN            // 거의 사용되지 않는 내용은 Windows 헤더에서 제외합니다.
#define VC_EXTRALEAN            // ���� ������ �ʴ� ������ Windows ������� �����մϴ�.
#endif
#include "targetver.h"
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS      // 일부 CString 생성자는 명시적으로 선언됩니다.
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS      // �Ϻ� CString �����ڴ� ��������� ����˴ϴ�.
// MFC의 공통 부분과 무시 가능한 경고 메시지에 대한 숨기기를 해제합니다.
// MFC�� ���� �κа� ���� ������ ��� �޽����� ���� ����⸦ �����մϴ�.
#define _AFX_ALL_WARNINGS
#include <afxwin.h>         // MFC 핵심 및 표준 구성 요소입니다.
#include <afxext.h>         // MFC 확장입니다.
#include <afxwin.h>         // MFC �ٽ� �� ǥ�� ���� ����Դϴ�.
#include <afxext.h>         // MFC Ȯ���Դϴ�.
#include <afxdisp.h>        // MFC 자동화 클래스입니다.
#include <afxdisp.h>        // MFC �ڵ�ȭ Ŭ�����Դϴ�.
#ifndef _AFX_NO_OLE_SUPPORT
#include <afxdtctl.h>           // Internet Explorer 4 공용 컨트롤에 대한 MFC 지원입니다.
#include <afxdtctl.h>           // Internet Explorer 4 ���� ��Ʈ�ѿ� ���� MFC �����Դϴ�.
#endif
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h>             // Windows 공용 컨트롤에 대한 MFC 지원입니다.
#include <afxcmn.h>             // Windows ���� ��Ʈ�ѿ� ���� MFC �����Դϴ�.
#endif // _AFX_NO_AFXCMN_SUPPORT
#include <afxcontrolbars.h>     // MFC의 리본 및 컨트롤 막대 지원
#include <afxcontrolbars.h>     // MFC�� ���� �� ��Ʈ�� ���� ����
#define _REVIEW_SERVER_BASE_PATH_                    _T("C:\\DIT_Review")
#define _REVIEW_SERVER_CONFIG_PATH_                    _T("C:\\DIT_Review\\ReviewServerConfig")
#define _REVIEW_SERVER_SYSTEM_SETTING_FILE_PATH_    _T("C:\\DIT_Review\\ReviewServerConfig\\SystemSetting.cfg")
#define _REVIEW_SERVER_SYSTEM_PASSWORD_FILE_PATH_    _T("C:\\DIT_Review\\ReviewServerConfig\\SystemSetting.dat")
#define _REVIEW_SERVER_BASE_PATH_                    _T("D:\\DIT_Review")  //210805
#define _REVIEW_SERVER_CONFIG_PATH_                    _T("D:\\DIT_Review\\ReviewServerConfig")
#define _REVIEW_SERVER_SYSTEM_SETTING_FILE_PATH_    _T("D:\\DIT_Review\\ReviewServerConfig\\SystemSetting.cfg")
#define _REVIEW_SERVER_SYSTEM_PASSWORD_FILE_PATH_    _T("D:\\DIT_Review\\ReviewServerConfig\\SystemSetting.dat")
//#define _REVIEW_SERVER_BASE_PATH_                    _T("C:\\DIT_Review")
//#define _REVIEW_SERVER_CONFIG_PATH_                    _T("C:\\DIT_Review\\ReviewServerConfig")
//#define _REVIEW_SERVER_SYSTEM_SETTING_FILE_PATH_    _T("C:\\DIT_Review\\ReviewServerConfig\\SystemSetting.cfg")
//#define _REVIEW_SERVER_SYSTEM_PASSWORD_FILE_PATH_    _T("C:\\DIT_Review\\ReviewServerConfig\\SystemSetting.dat")
#define _REVIEW_RECIPE_BACKUP_PATH_CPJT                _T("\\\\126.100.100.5\\d\\DIT Back up\\DIT Review\\Recipe")
#define _REVIEW_SERVER_SYSTEM_SETTING_BACKUP_PATH_CPJT    _T("\\\\126.100.100.5\\d\\DIT Back up\\DIT Review\\ReviewServerConfig")
#define _REVIEW_SYSTEM_TITLE_                        _T("ReviewSystem")
@@ -60,7 +65,7 @@
    MsgSystem2Rev_ChangeSysConfig,
    MsgRev2System_ChangeSysConfig,
    // [2017:5:2]-[WEZASW] : TFE Measurement 설비 UNIT Test(Signal 수동 발생)를 위한 추가
    // [2017:5:2]-[WEZASW] : TFE Measurement ���� UNIT Test(Signal ���� �߻�)�� ���� �߰�
    MsgSystem2Rev_SendAlignAlarmSignal,
    MsgRev2System_SendAlignAlarmSignal,
ReviewSystem/include/CHReviewRecipe/RsRcpAlignInfo.h
@@ -1,7 +1,11 @@
#pragma once
#define ALIGN_IMAGE_PATH _T("C:\\DIT_Review\\Recipe\\AlignImage")
#define REFLOW_IMAGE_PATH _T("C:\\DIT_Review\\Recipe\\Reflow")
#define ALIGN_IMAGE_PATH _T("D:\\DIT_Review\\Recipe\\AlignImage")  //210805
#define REFLOW_IMAGE_PATH _T("D:\\DIT_Review\\Recipe\\Reflow")
//#define ALIGN_IMAGE_PATH _T("C:\\DIT_Review\\Recipe\\AlignImage")
//#define REFLOW_IMAGE_PATH _T("C:\\DIT_Review\\Recipe\\Reflow")
class AFX_EXT_CLASS CRsRcpAlignInfo
{
ReviewSystem/include/M_AutoDiagnosisManager/DiagnosisInfo.h
@@ -3,7 +3,8 @@
#include <vector>
// path define
#define REVIEW_AUTO_DIAGNOSIS_SETTING_FILE_PATH            _T("C:\\DIT_Review\\DiagnosisConfig")
#define REVIEW_AUTO_DIAGNOSIS_SETTING_FILE_PATH            _T("D:\\DIT_Review\\DiagnosisConfig")  //210805
//#define REVIEW_AUTO_DIAGNOSIS_SETTING_FILE_PATH            _T("C:\\DIT_Review\\DiagnosisConfig")
#define REVIEW_AUTO_DIAGNOSIS_SETTING_FILE_NAME            _T("AutoDiagnosisSetting.cfg")
#define REVIEW_AUTO_DIAGNOSIS_DATA_FILE_PATH            _T("D:\\ResultData\\AutoDiagnosis")
#define REVIEW_AUTO_DIAGNOSIS_DATA_IMAGE_FILE_PATH        _T("D:\\ResultData\\AutoDiagnosis\\ResultImage")
@@ -58,7 +59,7 @@
    virtual void IDP2P_WsiMotorMotionEnd(int nModuleIdx, double dPosX, double dPosY) = 0;
    virtual BOOL IDP2P_DiagnosisSendCompleteSig()=0;
    virtual BOOL IDP2P_DiagnosisSendJudgeAlarm() = 0; //0412 AU°¡Aø´U ½AE£ Aß°¡
    virtual BOOL IDP2P_DiagnosisSendJudgeAlarm() = 0; //0412 AU�Ƣ�A����U ��AE�� A���Ƣ�
    // Dialog
    virtual BOOL IDP2P_SetDlgFlatness(int nIndex) = 0;
@@ -224,9 +225,9 @@
        m_dReviewPanelPosY2 = 0;
        m_dReviewPanelPosX4 = 0;
        m_dReviewPanelPosY4 = 0;
        //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
        //#3514_LYW_CF AOI Review �ڰ����� ��� ����_START
        m_nFlatnessSkipMode = 0;
        //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
        //#3514_LYW_CF AOI Review �ڰ����� ��� ����_END
    }
@@ -253,12 +254,12 @@
    void                    SetPanelPosY_Wsi(double dData) {  m_dPanelPosY = dData; }
    void                    SetPanelPosX2_Wsi(double dData) { m_dPanelPosX2 = dData; }
    void                    SetPanelPosY2_Wsi(double dData) { m_dPanelPosY2 = dData; }
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
    //#3514_LYW_CF AOI Review �ڰ����� ��� ����_START
    void                    SetFlastnessSkipMode(double dData) { m_nFlatnessSkipMode = dData; }
    void                    SetSquarenessStandard(double dData) { m_dSquarenessStandard = dData; }
    void                    SetSquarenessStandard2(double dData) { m_dSquarenessStandard2 = dData; }
    void                    SetWSIStandard(double dData) { m_dWSIStandard = dData; }
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
    //#3514_LYW_CF AOI Review �ڰ����� ��� ����_END
    // getter
@@ -290,12 +291,12 @@
    double                    GetPanelPosY_Wsi() const { return m_dPanelPosY; }
    double                    GetPanelPosX2_Wsi() const { return m_dPanelPosX2; }
    double                    GetPanelPosY2_Wsi() const { return m_dPanelPosY2; }
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
    //#3514_LYW_CF AOI Review �ڰ����� ��� ����_START
    int                        GetFlastnessSkipMode() const { return m_nFlatnessSkipMode; }
    double                    GetSquarenessStandard() const { return m_dSquarenessStandard; }
    double                    GetSquarenessStandard2() const { return m_dSquarenessStandard2; }
    double                    GetWSIStandard() const { return m_dWSIStandard; }
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
    //#3514_LYW_CF AOI Review �ڰ����� ��� ����_END
    //Review
public:
    double                    GetReviewPanelPosX() const { return m_dReviewPanelPosX; }
@@ -324,10 +325,10 @@
    int                            m_nCameraFrameHeight;
    double                        m_dCameraResolution;
    double                        m_dJudgeData_Degree;
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
    //#3514_LYW_CF AOI Review �ڰ����� ��� ����_START
    double                        m_dSquarenessStandard;
    double                        m_dSquarenessStandard2;
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
    //#3514_LYW_CF AOI Review �ڰ����� ��� ����_END
    // Flatness
    CDiagnosisResult            m_dataSettingResult_Flatness;        // single data
@@ -337,17 +338,17 @@
    int                            m_nRangeCount_Flatness;
    int                            m_nGlassSizeX;
    int                            m_nGlassSizeY;
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
    //#3514_LYW_CF AOI Review �ڰ����� ��� ����_START
    int                            m_nFlatnessSkipMode;
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
    //#3514_LYW_CF AOI Review �ڰ����� ��� ����_END
    // wsi
    VectorDiagnosisResult        m_vecSettingResult_Wsi;        // add module count
    int                            m_nPanelCount_Wsi;
    double                        m_dJudgeData_3Sigma;
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_START
    //#3514_LYW_CF AOI Review �ڰ����� ��� ����_START
    double                        m_dWSIStandard;
    //#3514_LYW_CF AOI Review 자가진단 기능 개선_END
    //#3514_LYW_CF AOI Review �ڰ����� ��� ����_END
    double                        m_dPanelPosX;
    double                        m_dPanelPosY;