// DlgDefectFilter.cpp : 구현 파일입니다. // #include "stdafx.h" #include "ReviewSystem.h" #include "DlgDefectFilter.h" #include "CHCommonControls/GridCellCheck.h" #include "MainFrm.h" #include "CHReviewSetting/SystemInfo.h" #include "DlgUpdateNote.h" #pragma comment(lib, "uxtheme.lib") // CDlgDefectFilter 대화 상자입니다. IMPLEMENT_DYNAMIC(CDlgDefectFilter, CDialog) CDlgDefectFilter::CDlgDefectFilter(CWnd* pParent /*=NULL*/) : CDialog(CDlgDefectFilter::IDD, pParent) , m_strMachineType(_T("")) { m_pDDF2P = NULL; m_pGlassResult = NULL; m_strProgramVersion = _T(""); m_nDefectFilter = DefectType_Gray; m_RowColor[0] = RGB(245, 152, 177); m_RowColor[1] = RGB(162, 162, 0); m_RowColor[2] = RGB(220,20,220); m_RowColor[3] = RGB(20,220,220); m_CheckValue[0] = 1; m_CheckValue[1] = 1; m_CheckValue[2] = 0; m_CheckValue[3] = 0; m_nMachineType = -1; } CDlgDefectFilter::~CDlgDefectFilter() { } void CDlgDefectFilter::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_GRID_MAP_OPTION, m_ctrlGridDefectFilter); DDX_Radio(pDX, IDC_RADIO_MAP_TYPE_0, m_nDefectFilter); DDX_Control(pDX, IDC_STATIC_VERSION, m_ctrlVersion); DDX_Control(pDX, IDC_STATIC_REVIEWED_DEFECT, m_ctrlReviewedCount); DDX_Control(pDX, IDC_STATIC_REVIEW_DEFECT, m_ctrlReviewCount); DDX_Control(pDX, IDC_STATIC_WSIED_DEFECT, m_ctrlWsiedCount); DDX_Control(pDX, IDC_STATIC_WSI_DEFECT, m_ctrlWsiCount); DDX_Control(pDX, IDC_STATIC_TOTAL_DEFECT, m_ctrlTotalCount); //DDX_Control(pDX, IDC_CHECK_USE_WSI, m_ctrlUseWSI); //DDX_Control(pDX, IDC_CHECK_USE_WSI_MEASUREMENT, m_ctrlUseWSIMeasurement); //DDX_Control(pDX, IDC_CHECK_DRAW_CELL, m_ctrlDraw[MapDrawCell]); //DDX_Control(pDX, IDC_CHECK_DRAW_DEFECT, m_ctrlDraw[MapDrawDefect]); //DDX_Control(pDX, IDC_CHECK_DRAW_REVIEW_DEFECT, m_ctrlDraw[MapDrawReviewDefect]); //DDX_Control(pDX, IDC_CHECK_DRAW_REVIEW_PATH, m_ctrlDraw[MapDrawReviewPath]); //DDX_Control(pDX, IDC_CHECK_DRAW_WSI_DEFECT, m_ctrlDraw[MapDrawWsiDefect]); //DDX_Control(pDX, IDC_CHECK_DRAW_WSI_PATH, m_ctrlDraw[MapDrawWsiPath]); //DDX_Control(pDX, IDC_CHECK_DRAW_WSI_DEFECT, m_ctrlDraw[MapDrawWsiDefect]); //DDX_Control(pDX, IDC_CHECK_DRAW_USER_PATH, m_ctrlDraw[MapDrawUserPath]); //DDX_Control(pDX, IDC_CHECK_DRAW_MEASURE_PATH, m_ctrlDraw[MapDrawMeasurePath]); //DDX_Control(pDX, IDC_CHECK_DRAW_SELECTED_DEFECT, m_ctrlDraw[MapDrawSelectedDefect]); //DDX_Control(pDX, IDC_CHECK_DRAW_CAMERA_POSITION, m_ctrlDraw[MapDrawCameraPosition]); DDX_Control(pDX, IDC_BUTTON_VERSION, m_btnctrlVersion); DDX_Control(pDX, IDC_STATIC_MACHINETYPE, m_staticMachineType); } BEGIN_MESSAGE_MAP(CDlgDefectFilter, CDialog) ON_BN_CLICKED(IDC_RADIO_MAP_TYPE_0, &CDlgDefectFilter::OnBnClickedRadioDefectFilter) ON_BN_CLICKED(IDC_RADIO_MAP_TYPE_1, &CDlgDefectFilter::OnBnClickedRadioDefectFilter) ON_BN_CLICKED(IDC_RADIO_MAP_TYPE_2, &CDlgDefectFilter::OnBnClickedRadioDefectFilter) ON_BN_CLICKED(IDC_RADIO_MAP_TYPE_3, &CDlgDefectFilter::OnBnClickedRadioDefectFilter) ON_BN_CLICKED(IDC_RADIO_MAP_TYPE_4, &CDlgDefectFilter::OnBnClickedRadioDefectFilter) ON_BN_CLICKED(IDC_RADIO_MAP_TYPE_5, &CDlgDefectFilter::OnBnClickedRadioDefectFilter) // ON_WM_TIMER() ON_MESSAGE(UM_DEFECT_FILTER_UPDATE, &CDlgDefectFilter::OnDefectFilterUpdate) ON_MESSAGE(UM_REVIEW_RESULT_UPDATE, &CDlgDefectFilter::OnReviewResultUpdate) ON_MESSAGE(UM_WSI_RESULT_UPDATE, &CDefectMap::OnReviewResultUpdate)//1218 ON_BN_CLICKED(IDC_CHECK_USE_WSI, &CDlgDefectFilter::OnBnClickedCheckUseWSI) ON_BN_CLICKED(IDC_CHECK_USE_WSI_MEASUREMENT, &CDlgDefectFilter::OnBnClickedCheckUseWSIMeasurement) ON_BN_CLICKED(IDC_CHECK_DRAW_CELL, &CDlgDefectFilter::OnBnClickedCheckDrawCell) ON_BN_CLICKED(IDC_CHECK_DRAW_DEFECT, &CDlgDefectFilter::OnBnClickedCheckDrawDefect) ON_BN_CLICKED(IDC_CHECK_DRAW_REVIEW_DEFECT, &CDlgDefectFilter::OnBnClickedCheckDrawReviewDefect) ON_BN_CLICKED(IDC_CHECK_DRAW_REVIEW_PATH, &CDlgDefectFilter::OnBnClickedCheckDrawReviewPath) ON_BN_CLICKED(IDC_CHECK_DRAW_SELECTED_DEFECT, &CDlgDefectFilter::OnBnClickedCheckDrawSelectedDefect) ON_BN_CLICKED(IDC_CHECK_DRAW_CAMERA_POSITION, &CDlgDefectFilter::OnBnClickedCheckDrawCameraPosition) ON_BN_CLICKED(IDC_CHECK_DRAW_WSI_DEFECT, &CDlgDefectFilter::OnBnClickedCheckDrawWsiDefect) ON_BN_CLICKED(IDC_CHECK_DRAW_WSI_PATH, &CDlgDefectFilter::OnBnClickedCheckDrawWsiPath) ON_BN_CLICKED(IDC_CHECK_DRAW_USER_PATH, &CDlgDefectFilter::OnBnClickedCheckDrawUserPath) ON_BN_CLICKED(IDC_CHECK_DRAW_MEASURE_PATH, &CDlgDefectFilter::OnBnClickedCheckDrawMeasurePath) ON_BN_CLICKED(IDC_BUTTON_VERSION, &CDlgDefectFilter::OnBnClickedButtonVersion) // ON_WM_ERASEBKGND() // ON_WM_CTLCOLOR() //ON_WM_ERASEBKGND() //ON_WM_CTLCOLOR() ON_WM_ERASEBKGND() ON_WM_CTLCOLOR() ON_WM_ERASEBKGND() ON_WM_CTLCOLOR() END_MESSAGE_MAP() // CDlgDefectFilter 메시지 처리기입니다. BOOL CDlgDefectFilter::OnInitDialog() { CDialog::OnInitDialog(); { _GroupCtrlOption op = m_ctrlGroupCtrlObjectShow.getCtrlOption(); op.nStyle = 1; op.nStyleSub = 0; op.nFontSize = 15; op.nTextPosX = 20; op.nTextPosY = 3; op.clrTitle = RGB(50,50,50); op.clrOutline = RGB(86,86,86); op.clrFontNormal = RGB(255,255,255); op.nTitleHeight = 24; m_ctrlGroupCtrlObjectShow.setCtrlOption(op); m_ctrlGroupCtrlObjectShow.addControl(IDC_STATIC_OBJECT_SHOW, this); m_ctrlGroupCtrlReviewDoDone.setCtrlOption(op); m_ctrlGroupCtrlReviewDoDone.addControl(IDC_STATIC_REVIEW_DODONE, this); m_ctrlGroupCtrlDefectType.setCtrlOption(op); m_ctrlGroupCtrlDefectType.addControl(IDC_STATIC_DEFECT_TYPE, this); } { _ColorButtonOption op = m_ctrlDrawCell.getCtrlOption(); op.nStyle = 1; op.nEdgeStyle = 1; op.clrButtonShow = RGB(50,50,50); op.clrFontNormal = RGB(255,255,255); op.clrFontPush = RGB(255,255,255); m_ctrlDrawCell.setCtrlOption(op); m_ctrlDrawCell.addControl(IDC_CHECK_DRAW_CELL, this); m_ctrlBtDrawDefect.setCtrlOption(op); m_ctrlBtDrawDefect.addControl(IDC_CHECK_DRAW_DEFECT, this); m_ctrlBtDrawReviewPath.setCtrlOption(op); m_ctrlBtDrawReviewPath.addControl(IDC_CHECK_DRAW_REVIEW_PATH, this); m_ctrlBtDrawUserPath.setCtrlOption(op); m_ctrlBtDrawUserPath.addControl(IDC_CHECK_DRAW_USER_PATH, this); m_ctrlBtDrawWsiDefect.setCtrlOption(op); m_ctrlBtDrawWsiDefect.addControl(IDC_CHECK_DRAW_WSI_DEFECT, this); m_ctrlBtDrawWsiPath.setCtrlOption(op); m_ctrlBtDrawWsiPath.addControl(IDC_CHECK_DRAW_WSI_PATH, this); m_ctrlBtUseWsi.setCtrlOption(op); m_ctrlBtUseWsi.addControl(IDC_CHECK_USE_WSI, this); m_ctrlBtUseWsiMeasurement.setCtrlOption(op); m_ctrlBtUseWsiMeasurement.addControl(IDC_CHECK_USE_WSI_MEASUREMENT, this); m_ctrlBtReviewDefect.setCtrlOption(op); m_ctrlBtReviewDefect.addControl(IDC_CHECK_DRAW_REVIEW_DEFECT, this); m_ctrlBtSelected_Defect.setCtrlOption(op); m_ctrlBtSelected_Defect.addControl(IDC_CHECK_DRAW_SELECTED_DEFECT, this); m_ctrlBtCameraPos.setCtrlOption(op); m_ctrlBtCameraPos.addControl(IDC_CHECK_DRAW_CAMERA_POSITION, this); m_ctrlBtMeasurePath.setCtrlOption(op); m_ctrlBtMeasurePath.addControl(IDC_CHECK_DRAW_MEASURE_PATH, this); } m_ctrlDraw[MapDrawCell] = m_ctrlDrawCell.GetDlgItem(IDC_CHECK_DRAW_CELL); m_ctrlDraw[MapDrawDefect]= m_ctrlBtDrawDefect.GetDlgItem(IDC_CHECK_DRAW_DEFECT); m_ctrlDraw[MapDrawReviewPath]= m_ctrlBtDrawReviewPath.GetDlgItem(IDC_CHECK_DRAW_REVIEW_PATH); m_ctrlDraw[MapDrawWsiPath]= m_ctrlBtDrawWsiPath.GetDlgItem(IDC_CHECK_DRAW_WSI_PATH); m_ctrlDraw[MapDrawWsiDefect]= m_ctrlBtDrawWsiDefect.GetDlgItem(IDC_CHECK_DRAW_WSI_DEFECT); m_ctrlDraw[MapDrawUserPath]= m_ctrlBtDrawUserPath.GetDlgItem(IDC_CHECK_DRAW_USER_PATH); m_ctrlDraw[MapDrawReviewDefect] = m_ctrlBtReviewDefect.GetDlgItem(IDC_CHECK_DRAW_REVIEW_DEFECT); m_ctrlDraw[MapDrawSelectedDefect]= m_ctrlBtSelected_Defect.GetDlgItem(IDC_CHECK_DRAW_SELECTED_DEFECT); m_ctrlDraw[MapDrawCameraPosition] = m_ctrlBtCameraPos.GetDlgItem(IDC_CHECK_DRAW_CAMERA_POSITION); m_ctrlDraw[MapDrawMeasurePath]= m_ctrlBtMeasurePath.GetDlgItem(IDC_CHECK_DRAW_MEASURE_PATH); m_ctrlUseWSI=m_ctrlBtUseWsi.GetDlgItem(IDC_CHECK_USE_WSI); m_ctrlUseWSIMeasurement=m_ctrlBtUseWsiMeasurement.GetDlgItem(IDC_CHECK_USE_WSI_MEASUREMENT); if(m_pDDF2P) { m_strProgramVersion = m_pDDF2P->DDF2P_GetProgramVersion(); } m_btnctrlVersion.SetWindowText(m_strProgramVersion); // 20160818 for (int i=0; im_hWnd == NULL) continue; m_ctrlDraw[i]->SetCheck(m_sDefectFilter.pDraw[i]); } SetWindowTheme(GetDlgItem(IDC_RADIO_MAP_TYPE_0)->GetSafeHwnd(), (LPCWSTR)TEXT(""), (LPCWSTR)TEXT("")); SetWindowTheme(GetDlgItem(IDC_RADIO_MAP_TYPE_1)->GetSafeHwnd(), (LPCWSTR)TEXT(""), (LPCWSTR)TEXT("")); SetWindowTheme(GetDlgItem(IDC_RADIO_MAP_TYPE_2)->GetSafeHwnd(), (LPCWSTR)TEXT(""), (LPCWSTR)TEXT("")); SetWindowTheme(GetDlgItem(IDC_RADIO_MAP_TYPE_3)->GetSafeHwnd(),(LPCWSTR) TEXT(""), (LPCWSTR)TEXT("")); SetWindowTheme(GetDlgItem(IDC_RADIO_MAP_TYPE_4)->GetSafeHwnd(), (LPCWSTR)TEXT(""), (LPCWSTR)TEXT("")); m_ctrlReviewedCount.SetFontStatic(_T("Arial"), 20, RGB(255,255,0), FS_BOLD | FS_ANTIALIAS | FS_CENTER); m_ctrlReviewedCount.SetBackground(RGB(0,0,0)); m_ctrlReviewedCount.SetWindowText(_T("00")); m_ctrlReviewCount.SetFontStatic(_T("Arial"), 20, RGB(0,255,0), FS_BOLD | FS_ANTIALIAS | FS_CENTER); m_ctrlReviewCount.SetBackground(RGB(0,0,0)); m_ctrlReviewCount.SetWindowText(_T("00")); m_ctrlWsiedCount.SetFontStatic(_T("Arial"), 20, RGB(255,255,0), FS_BOLD | FS_ANTIALIAS | FS_CENTER); m_ctrlWsiedCount.SetBackground(RGB(0,0,0)); m_ctrlWsiedCount.SetWindowText(_T("00")); m_ctrlWsiCount.SetFontStatic(_T("Arial"), 20, RGB(0,255,0), FS_BOLD | FS_ANTIALIAS | FS_CENTER); m_ctrlWsiCount.SetBackground(RGB(0,0,0)); m_ctrlWsiCount.SetWindowText(_T("00")); m_ctrlTotalCount.SetFontStatic(_T("Arial"), 20, RGB(255,0,0), FS_BOLD | FS_ANTIALIAS | FS_CENTER); m_ctrlTotalCount.SetBackground(RGB(0,0,0)); m_ctrlTotalCount.SetWindowText(_T("00")); ShowDefectFilter(m_nMachineType); InitGridDefectFilter(); FillGridDefectFilter(); return TRUE; // return TRUE unless you set the focus to a control // 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다. } BOOL CDlgDefectFilter::PreTranslateMessage(MSG* pMsg) { // TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다. if( pMsg->message == WM_KEYDOWN ) { if(pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE ) { ::TranslateMessage(pMsg); ::DispatchMessage(pMsg); return TRUE; } } return CDialog::PreTranslateMessage(pMsg); } void CDlgDefectFilter::UpdateDefectFilter(const SDefectFilter* pDefectFilter) { if (pDefectFilter==NULL) return; // save defect filter m_sDefectFilter = *pDefectFilter; this->PostMessage(UM_DEFECT_FILTER_UPDATE); } LRESULT CDlgDefectFilter::OnReviewResultUpdate(WPARAM wParam, LPARAM lParam) { if (m_pGlassResult==NULL) return 0; const VectorReviewResult *pVecReviewResult = m_pGlassResult->GetVectorReviewResult(); if (pVecReviewResult==NULL) return 0; int nReviewedDefectCount = 0; int nReviewDefectCount = 0; int nTotalDefectCount = m_pGlassResult->GetDefectResultCount(); for(constVectorReviewResultIt it=pVecReviewResult->begin();it!=pVecReviewResult->end();it++) { const CReviewResult *pReviewResult = static_cast(&(*it)); nReviewDefectCount += (int)pReviewResult->m_vecSReviewResult.size(); for(constVectorSReviewResultIt its=pReviewResult->m_vecSReviewResult.begin(); its!=pReviewResult->m_vecSReviewResult.end();its++) { if (its->nResultCode>ReviewResult_None) { nReviewedDefectCount++; } } } const VectorReviewResult *pVecWsiResult = m_pGlassResult->GetVectorWsiResult(); if (pVecWsiResult==NULL) return 0; int nWsiedDefectCount = 0; int nWsiDefectCount = 0; for(constVectorReviewResultIt it=pVecWsiResult->begin();it!=pVecWsiResult->end();it++) { const CReviewResult *pWsiResult = static_cast(&(*it)); nWsiDefectCount += (int)pWsiResult->m_vecSReviewResult.size(); for(constVectorSReviewResultIt its=pWsiResult->m_vecSReviewResult.begin(); its!=pWsiResult->m_vecSReviewResult.end();its++) { if (its->nResultCode>WsiResult_None) { nWsiedDefectCount++; } } } CString strValue = _T(""); strValue.Format(_T("%03d"), nReviewedDefectCount); m_ctrlReviewedCount.SetWindowText(strValue); strValue.Format(_T("%03d"), nReviewDefectCount); m_ctrlReviewCount.SetWindowText(strValue); strValue.Format(_T("%03d"), nWsiedDefectCount); m_ctrlWsiedCount.SetWindowText(strValue); strValue.Format(_T("%03d"), nWsiDefectCount); m_ctrlWsiCount.SetWindowText(strValue); strValue.Format(_T("%03d"), nTotalDefectCount); m_ctrlTotalCount.SetWindowText(strValue); return 1; } void CDlgDefectFilter::UpdateReviewResult(int nModuleIndex, const CGlassResult* pGlassResult, int nPlanIndex) { if (pGlassResult==NULL) return; m_pGlassResult = pGlassResult; this->PostMessage(UM_REVIEW_RESULT_UPDATE); } void CDlgDefectFilter::InitGridDefectFilter() { int nRowIdx, nColIdx, nRows, nCols, nFixRows, nFixCols; CString strTemp; CRect rt; nRows = 4; nCols = 3; nFixRows = 0; nFixCols = 0; nRowIdx = 0; nColIdx = 0; m_ctrlGridDefectFilter.GetClientRect(&rt); m_ctrlGridDefectFilter.GetDefaultCell(TRUE, FALSE)->SetBackClr(RGB(255, 255, 255)); m_ctrlGridDefectFilter.GetDefaultCell(FALSE, TRUE)->SetBackClr(RGB(255, 255, 255)); m_ctrlGridDefectFilter.GetDefaultCell(FALSE, FALSE)->SetBackClr(RGB(255, 255, 255)); m_ctrlGridDefectFilter.SetFixedRowCount(nFixRows); m_ctrlGridDefectFilter.SetFixedColumnCount(nFixCols); m_ctrlGridDefectFilter.SetRowCount(nRows); m_ctrlGridDefectFilter.SetColumnCount(nCols); m_ctrlGridDefectFilter.SetEditable(TRUE); m_ctrlGridDefectFilter.SetSelectedRange(0, 0, 0, 0, FALSE, FALSE); nColIdx = 0; m_ctrlGridDefectFilter.SetColumnWidth(nColIdx++, 20); m_ctrlGridDefectFilter.SetColumnWidth(nColIdx++, 30); m_ctrlGridDefectFilter.SetColumnWidth(nColIdx++, 95); nRowIdx = 0; m_ctrlGridDefectFilter.SetRowHeight(nRowIdx++, 20); m_ctrlGridDefectFilter.SetRowHeight(nRowIdx++, 20); m_ctrlGridDefectFilter.SetRowHeight(nRowIdx++, 20); m_ctrlGridDefectFilter.SetRowHeight(nRowIdx++, 20); //col 0 nRowIdx = 0; nColIdx = 0; m_ctrlGridDefectFilter.SetCellType(nRowIdx++, nColIdx, RUNTIME_CLASS(CGridCellCheck)); m_ctrlGridDefectFilter.SetCellType(nRowIdx++, nColIdx, RUNTIME_CLASS(CGridCellCheck)); m_ctrlGridDefectFilter.SetCellType(nRowIdx++, nColIdx, RUNTIME_CLASS(CGridCellCheck)); m_ctrlGridDefectFilter.SetCellType(nRowIdx++, nColIdx, RUNTIME_CLASS(CGridCellCheck)); } LRESULT CDlgDefectFilter::OnDefectFilterUpdate(WPARAM wParam, LPARAM lParam) { m_nDefectFilter = m_sDefectFilter.nOptionType; switch(m_nDefectFilter) { case DefectType_Optic: m_CheckValue[0] = m_sDefectFilter.bOpticDark; m_CheckValue[1] = m_sDefectFilter.bOpticBright; m_CheckValue[2] = m_sDefectFilter.bOpticDkBr; m_CheckValue[3] = 0; break; case DefectType_Gray: m_CheckValue[0] = m_sDefectFilter.bGrayBlack; m_CheckValue[1] = m_sDefectFilter.bGrayWhite; m_CheckValue[2] = 0; m_CheckValue[3] = 0; break; case DefectType_Stack: m_CheckValue[0] = m_sDefectFilter.bStackTD; m_CheckValue[1] = m_sDefectFilter.bStackSD; m_CheckValue[2] = m_sDefectFilter.bStackPD; m_CheckValue[3] = m_sDefectFilter.bStackSP; //taek break; case DefectType_Size: m_CheckValue[0] = m_sDefectFilter.bSizeSmall; m_CheckValue[1] = m_sDefectFilter.bSizeMedium; m_CheckValue[2] = m_sDefectFilter.bSizeLarge; m_CheckValue[3] = m_sDefectFilter.bSizeHuge; break; case DefectType_Judge: m_CheckValue[0] = m_sDefectFilter.bJudgeOK; m_CheckValue[1] = m_sDefectFilter.bJudgeTR; m_CheckValue[2] = m_sDefectFilter.bJudgePR; m_CheckValue[3] = m_sDefectFilter.bJudgeND; break; case DefectType_Process: m_CheckValue[0] = m_sDefectFilter.bProcessNormal; m_CheckValue[1] = m_sDefectFilter.bProcessMask; m_CheckValue[2] = m_sDefectFilter.bProcessCommon; m_CheckValue[3] = m_sDefectFilter.bProcessCrack; break; case DefectType_Position: m_CheckValue[0] = m_sDefectFilter.bPositionFront; m_CheckValue[1] = m_sDefectFilter.bPositionBack; m_CheckValue[2] = 0; m_CheckValue[3] = 0; break; } FillGridDefectFilter(); return 0; } void CDlgDefectFilter::FillGridDefectFilter() { switch(m_nDefectFilter) { case DefectType_Optic: FillGridDefectFilterOptic(); break; case DefectType_Gray: FillGridDefectFilterGray(); break; case DefectType_Stack: FillGridDefectFilterStack(); break; case DefectType_Size: FillGridDefectFilterSize(); break; case DefectType_Judge: FillGridDefectFilterJudge(); break; case DefectType_Process: FillGridDefectFilterProcess(); break; case DefectType_Position: FillGridDefectFilterPosition(); break; } m_ctrlGridDefectFilter.Refresh(); } void CDlgDefectFilter::FillGridDefectFilterProcess() { for (int i=0; i<4; i++) { CGridCellCheck* pCellCheck = (CGridCellCheck*)m_ctrlGridDefectFilter.GetCell(i, 0); if(pCellCheck) pCellCheck->SetCheck(m_CheckValue[i]); m_ctrlGridDefectFilter.GetCell(i, 0)->SetBackClr(m_RowColor[i]); m_ctrlGridDefectFilter.GetCell(i, 1)->SetBackClr(m_RowColor[i]); m_ctrlGridDefectFilter.GetCell(i, 2)->SetBackClr(m_RowColor[i]); } // col 1 int nRowIdx = 0; m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("NR")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("Normal Defect")); m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("MD")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("Mask Defect")); m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("CD")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("Common Defect")); m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("CR")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("Crack Defect")); } void CDlgDefectFilter::FillGridDefectFilterJudge() { for (int i=0; i<4; i++) { CGridCellCheck* pCellCheck = (CGridCellCheck*)m_ctrlGridDefectFilter.GetCell(i, 0); if(pCellCheck) pCellCheck->SetCheck(m_CheckValue[i]); m_ctrlGridDefectFilter.GetCell(i, 0)->SetBackClr(m_RowColor[i]); m_ctrlGridDefectFilter.GetCell(i, 1)->SetBackClr(m_RowColor[i]); m_ctrlGridDefectFilter.GetCell(i, 2)->SetBackClr(m_RowColor[i]); } // col 1 int nRowIdx = 0; m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("OK")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("OK Defect")); m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("TR")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("TR Defect")); m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("PR")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("PR Defect")); m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("ND")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("ND Defect")); } void CDlgDefectFilter::FillGridDefectFilterStack() { for (int i=0; i<4; i++) { CGridCellCheck* pCellCheck = (CGridCellCheck*)m_ctrlGridDefectFilter.GetCell(i, 0); if(pCellCheck) pCellCheck->SetCheck(m_CheckValue[i]); m_ctrlGridDefectFilter.GetCell(i, 0)->SetBackClr(m_RowColor[i]); m_ctrlGridDefectFilter.GetCell(i, 1)->SetBackClr(m_RowColor[i]); m_ctrlGridDefectFilter.GetCell(i, 2)->SetBackClr(m_RowColor[i]); } // col 1 int nRowIdx = 0; m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("TD")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("Total Defect")); m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("SD")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("Stack Defect")); m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("PD")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("Partial Defect")); m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("SP")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("Stack Partial")); } void CDlgDefectFilter::FillGridDefectFilterSize() { for (int i=0; i<4; i++) { CGridCellCheck* pCellCheck = (CGridCellCheck*)m_ctrlGridDefectFilter.GetCell(i, 0); if(pCellCheck) pCellCheck->SetCheck(m_CheckValue[i]); m_ctrlGridDefectFilter.GetCell(i, 0)->SetBackClr(m_RowColor[i]); m_ctrlGridDefectFilter.GetCell(i, 1)->SetBackClr(m_RowColor[i]); m_ctrlGridDefectFilter.GetCell(i, 2)->SetBackClr(m_RowColor[i]); } // col 1 int nRowIdx = 0; m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("S")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("Small Defect")); m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("M")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("Medium Defect")); m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("L")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("Large Defect")); m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("H")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("Huge Defect")); } void CDlgDefectFilter::FillGridDefectFilterOptic() { for (int i=0; i<4; i++) { CGridCellCheck* pCellCheck = (CGridCellCheck*)m_ctrlGridDefectFilter.GetCell(i, 0); if(pCellCheck) pCellCheck->SetCheck(m_CheckValue[i]); m_ctrlGridDefectFilter.GetCell(i, 0)->SetBackClr(m_RowColor[i]); m_ctrlGridDefectFilter.GetCell(i, 1)->SetBackClr(m_RowColor[i]); m_ctrlGridDefectFilter.GetCell(i, 2)->SetBackClr(m_RowColor[i]); } // col 1 int nRowIdx = 0; m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("DK")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("Dark Defect")); m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("BR")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("Bright Defect")); m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("BD")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("Bright Dark")); m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("")); } //변경 필요 void CDlgDefectFilter::FillGridDefectFilterGray() { for (int i=0; i<4; i++) { CGridCellCheck* pCellCheck = (CGridCellCheck*)m_ctrlGridDefectFilter.GetCell(i, 0); if(pCellCheck) pCellCheck->SetCheck(m_CheckValue[i]); m_ctrlGridDefectFilter.GetCell(i, 0)->SetBackClr(m_RowColor[i]); m_ctrlGridDefectFilter.GetCell(i, 1)->SetBackClr(m_RowColor[i]); m_ctrlGridDefectFilter.GetCell(i, 2)->SetBackClr(m_RowColor[i]); } // col 1 int nRowIdx = 0; m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("BL")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("Black Defect")); m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("WH")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("White Defect")); m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("")); m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("")); } void CDlgDefectFilter::FillGridDefectFilterPosition() { for (int i=0; i<4; i++) { CGridCellCheck* pCellCheck = (CGridCellCheck*)m_ctrlGridDefectFilter.GetCell(i, 0); if(pCellCheck) pCellCheck->SetCheck(m_CheckValue[i]); m_ctrlGridDefectFilter.GetCell(i, 0)->SetBackClr(m_RowColor[i]); m_ctrlGridDefectFilter.GetCell(i, 1)->SetBackClr(m_RowColor[i]); m_ctrlGridDefectFilter.GetCell(i, 2)->SetBackClr(m_RowColor[i]); } // col 1 int nRowIdx = 0; m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("FD")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("Front Defect")); m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("BD")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("Back Defect")); m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("")); m_ctrlGridDefectFilter.SetItemText(nRowIdx, 1, _T("")); m_ctrlGridDefectFilter.SetItemText(nRowIdx++, 2, _T("")); } void CDlgDefectFilter::OnBnClickedRadioDefectFilter() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. UpdateData(TRUE); m_sDefectFilter.nOptionType = m_nDefectFilter; if (m_pDDF2P) { m_pDDF2P->DDF2P_SetDefectFilter(&m_sDefectFilter); } } BOOL CDlgDefectFilter::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) { // TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다. if (wParam==m_ctrlGridDefectFilter.GetDlgCtrlID()) { GetGridDefectFilter(); } return __super::OnNotify(wParam, lParam, pResult); } void CDlgDefectFilter::GetGridDefectFilter() { UpdateData(TRUE); for (int i=0; i<4; i++) { CGridCellCheck* pCellCheck = (CGridCellCheck*)m_ctrlGridDefectFilter.GetCell(i, 0); if(pCellCheck) { m_CheckValue[i] = pCellCheck->GetCheck(); } } switch(m_sDefectFilter.nOptionType) { case DefectType_Optic: m_sDefectFilter.bOpticDark = m_CheckValue[0]; m_sDefectFilter.bOpticBright = m_CheckValue[1]; m_sDefectFilter.bOpticDkBr = m_CheckValue[2]; break; case DefectType_Gray: m_sDefectFilter.bGrayBlack = m_CheckValue[0]; m_sDefectFilter.bGrayWhite = m_CheckValue[1]; break; case DefectType_Stack: m_sDefectFilter.bStackTD = m_CheckValue[0]; m_sDefectFilter.bStackSD = m_CheckValue[1]; m_sDefectFilter.bStackPD = m_CheckValue[2]; m_sDefectFilter.bStackSP = m_CheckValue[3]; //taek break; case DefectType_Size: m_sDefectFilter.bSizeSmall = m_CheckValue[0]; m_sDefectFilter.bSizeMedium = m_CheckValue[1]; m_sDefectFilter.bSizeLarge = m_CheckValue[2]; m_sDefectFilter.bSizeHuge = m_CheckValue[3]; break; case DefectType_Judge: m_sDefectFilter.bJudgeOK = m_CheckValue[0]; m_sDefectFilter.bJudgeTR = m_CheckValue[1]; m_sDefectFilter.bJudgePR = m_CheckValue[2]; m_sDefectFilter.bJudgeND = m_CheckValue[3]; break; case DefectType_Process: m_sDefectFilter.bProcessNormal = m_CheckValue[0]; m_sDefectFilter.bProcessMask = m_CheckValue[1]; m_sDefectFilter.bProcessCommon = m_CheckValue[2]; m_sDefectFilter.bProcessCrack = m_CheckValue[3]; break; case DefectType_Position: m_sDefectFilter.bPositionFront = m_CheckValue[0]; m_sDefectFilter.bPositionBack = m_CheckValue[1]; break; } if (m_pDDF2P) { m_pDDF2P->DDF2P_SetDefectFilter(&m_sDefectFilter); } } void CDlgDefectFilter::OnBnClickedCheckUseWSI() { m_sDefectFilter.bUseWSI = m_ctrlUseWSI->GetCheck(); if (m_pDDF2P) { m_pDDF2P->DDF2P_SetDefectFilter(&m_sDefectFilter); } } void CDlgDefectFilter::OnBnClickedCheckUseWSIMeasurement() { m_sDefectFilter.bUseWSIMeasurement = m_ctrlUseWSIMeasurement->GetCheck(); if (m_pDDF2P) { m_pDDF2P->DDF2P_SetDefectFilter(&m_sDefectFilter); } } void CDlgDefectFilter::OnBnClickedCheckDrawCell() { m_sDefectFilter.pDraw[MapDrawCell] = m_ctrlDraw[MapDrawCell]->GetCheck(); if (m_pDDF2P) { m_pDDF2P->DDF2P_SetDefectFilter(&m_sDefectFilter); } } void CDlgDefectFilter::OnBnClickedCheckDrawDefect() { m_sDefectFilter.pDraw[MapDrawDefect] = m_ctrlDraw[MapDrawDefect]->GetCheck(); if (m_pDDF2P) { m_pDDF2P->DDF2P_SetDefectFilter(&m_sDefectFilter); } } void CDlgDefectFilter::OnBnClickedCheckDrawReviewDefect() { m_sDefectFilter.pDraw[MapDrawReviewDefect] = m_ctrlDraw[MapDrawReviewDefect]->GetCheck(); if (m_pDDF2P) { m_pDDF2P->DDF2P_SetDefectFilter(&m_sDefectFilter); } } void CDlgDefectFilter::OnBnClickedCheckDrawSelectedDefect() { m_sDefectFilter.pDraw[MapDrawSelectedDefect] = m_ctrlDraw[MapDrawSelectedDefect]->GetCheck(); if (m_pDDF2P) { m_pDDF2P->DDF2P_SetDefectFilter(&m_sDefectFilter); } } void CDlgDefectFilter::OnBnClickedCheckDrawCameraPosition() { m_sDefectFilter.pDraw[MapDrawCameraPosition] = m_ctrlDraw[MapDrawCameraPosition]->GetCheck(); if (m_pDDF2P) { m_pDDF2P->DDF2P_SetDefectFilter(&m_sDefectFilter); } } void CDlgDefectFilter::OnBnClickedCheckDrawWsiDefect() { m_sDefectFilter.pDraw[MapDrawWsiDefect] = m_ctrlDraw[MapDrawWsiDefect]->GetCheck(); if (m_pDDF2P) { m_pDDF2P->DDF2P_SetDefectFilter(&m_sDefectFilter); } } void CDlgDefectFilter::OnBnClickedCheckDrawReviewPath() { m_sDefectFilter.pDraw[MapDrawReviewPath] = m_ctrlDraw[MapDrawReviewPath]->GetCheck(); m_sDefectFilter.pDraw[MapDrawReviewDefect] = m_sDefectFilter.pDraw[MapDrawReviewPath]; if (m_pDDF2P) { m_pDDF2P->DDF2P_SetDefectFilter(&m_sDefectFilter); } } void CDlgDefectFilter::OnBnClickedCheckDrawWsiPath() { m_sDefectFilter.pDraw[MapDrawWsiPath] = m_ctrlDraw[MapDrawWsiPath]->GetCheck(); m_sDefectFilter.pDraw[MapDrawWsiDefect] = m_sDefectFilter.pDraw[MapDrawWsiPath]; if (m_pDDF2P) { m_pDDF2P->DDF2P_SetDefectFilter(&m_sDefectFilter); } } void CDlgDefectFilter::OnBnClickedCheckDrawUserPath() { m_sDefectFilter.pDraw[MapDrawUserPath] = m_ctrlDraw[MapDrawUserPath]->GetCheck(); m_sDefectFilter.pDraw[MapDrawUserPoint] = m_sDefectFilter.pDraw[MapDrawUserPath]; if (m_pDDF2P) { m_pDDF2P->DDF2P_SetDefectFilter(&m_sDefectFilter); } } void CDlgDefectFilter::OnBnClickedCheckDrawMeasurePath() { m_sDefectFilter.pDraw[MapDrawMeasurePath] = m_ctrlDraw[MapDrawMeasurePath]->GetCheck(); m_sDefectFilter.pDraw[MapDrawMeasurePoint] = m_sDefectFilter.pDraw[MapDrawMeasurePath]; if (m_pDDF2P) { m_pDDF2P->DDF2P_SetDefectFilter(&m_sDefectFilter); } } BOOL CDlgDefectFilter::ShowDefectFilter(int nType) { m_staticMachineType.SetWindowText(m_strMachineType); return TRUE; } BOOL CDlgDefectFilter::SetMachineType(int nType) { m_nMachineType = nType; switch(m_nMachineType) { case 0: m_strMachineType.Format(_T("MachineType : QD")); break; case 1: m_strMachineType.Format(_T("MachineType : RGB")); break; case 2: m_strMachineType.Format(_T("MachineType : BANK")); break; case 3: m_strMachineType.Format(_T("MachineType : OC")); break; case 4: m_strMachineType.Format(_T("MachineType : BDI")); break; case 5: m_strMachineType.Format(_T("MachineType : CS")); break; default: m_strMachineType.Format(_T("MachineType : CPJT")); break; } return TRUE; } void CDlgDefectFilter::OnBnClickedButtonVersion() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. CDlgUpdateNote *dlgUpdateNote; dlgUpdateNote = new CDlgUpdateNote; dlgUpdateNote->Create(CDlgUpdateNote::IDD, this); dlgUpdateNote->ShowWindow(SW_SHOW); } CDlgDefectFilter* CDlgDefectFilter::pDlgDefectFilter; CDlgDefectFilter* CDlgDefectFilter::GetInstance(CWnd* it){ if(pDlgDefectFilter ==NULL){ pDlgDefectFilter = new CDlgDefectFilter(it); } return pDlgDefectFilter; } CDlgDefectFilter* CDlgDefectFilter::GetInstance(){ if(pDlgDefectFilter ==NULL){ pDlgDefectFilter = new CDlgDefectFilter(); } return pDlgDefectFilter; } // HBRUSH CDlgDefectFilter::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) // { // HBRUSH hbr = __super::OnCtlColor(pDC, pWnd, nCtlColor); // // //CRect rect; // //CString strClass = _T(""); // //UINT nID = pWnd->GetDlgCtrlID(); // // //if(nCtlColor == CTLCOLOR_STATIC) // //{ // // pDC->SetTextColor(RGB(255,255,255)); // // pDC->SetBkColor(RGB(38,38,38)); // // hbr = (HBRUSH)GetStockObject(NULL_BRUSH); // //} // // // // TODO: 기본값이 적당하지 않으면 다른 브러시를 반환합니다. // return hbr; // // } // BOOL CDlgDefectFilter::OnEraseBkgnd(CDC* pDC) // { // // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다. // /* CRect rect; // GetClientRect(&rect); // __super::OnEraseBkgnd(pDC); // pDC->FillSolidRect(rect, RGB(38,38,38) );*/ // // return TRUE; // } BOOL CDlgDefectFilter::OnEraseBkgnd(CDC* pDC) { // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다. CRect rect; GetClientRect(&rect); __super::OnEraseBkgnd(pDC); pDC->FillSolidRect(rect, RGB(38,38,38) ); return TRUE; } HBRUSH CDlgDefectFilter::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = __super::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 여기서 DC의 특성을 변경합니다. CRect rect; CString strClass = _T(""); UINT nID = pWnd->GetDlgCtrlID(); if(nCtlColor == CTLCOLOR_STATIC) { pDC->SetTextColor(RGB(255,255,255)); pDC->SetBkColor(RGB(38,38,38)); m_brushBk.DeleteObject(); m_brushBk.CreateSolidBrush(RGB(38,38,38)); hbr = m_brushBk; } // TODO: 기본값이 적당하지 않으면 다른 브러시를 반환합니다. return hbr; }