// DlgControl.cpp : 구현 파일입니다. // #include "stdafx.h" #include "ReviewSystem.h" #include "DlgControl.h" #include "afxdialogex.h" #include "MainFrm.h" #include "DlgKeyJogLogin.h" #include "CHReviewSetting/SystemInfo.h" #include "CHReviewSetting/NetworkInfo.h" #include "DlgDefectList.h" #include "DlgDefectInfo.h" //taek 20.12.04 #pragma comment(lib, "uxtheme.lib") // CDlgControl 대화 상자입니다. IMPLEMENT_DYNAMIC(CDlgControl, CDialog) CDlgControl::CDlgControl(CWnd* pParent /*=NULL*/) : CDialog(CDlgControl::IDD, pParent) { m_pDC2P = NULL; m_nModuleIndex = -1; m_nJogDown = -1; m_bCheckKeyJog = FALSE; m_nKeyBoardCommand = -1; m_bMoveKeyJogCheck = TRUE; m_nKeyJogDownIndex = -1; m_nMoveMode = MoveMode_Review; m_nMoveAxis = MoveAxis_Center; m_nGlassGridViewIndex = 0; pDlgContol = NULL; m_bAlignCamGrab = FALSE; } #define ENABLE_RADIO_TIMER CDlgControl::~CDlgControl() { delete KeyboardCommandMode; KeyboardCommandMode = NULL; } void CDlgControl::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_STATIC_X_JOG_PLUS, m_ctrlJogCommand[JogCommand_Right]); DDX_Control(pDX, IDC_STATIC_Y_JOG_PLUS, m_ctrlJogCommand[JogCommand_Top]); DDX_Control(pDX, IDC_STATIC_R_JOG_PLUS, m_ctrlJogCommand[JogCommand_AntiClock]); DDX_Control(pDX, IDC_STATIC_X_JOG_MINUS, m_ctrlJogCommand[JogCommand_Left]); DDX_Control(pDX, IDC_STATIC_Y_JOG_MINUS, m_ctrlJogCommand[JogCommand_Bottom]); DDX_Control(pDX, IDC_STATIC_R_JOG_MINUS, m_ctrlJogCommand[JogCommand_Clock]); DDX_Control(pDX, IDC_SLIDER_JOG_SPEED, m_ctrlSliderJogSpeed); DDX_Control(pDX, IDC_SLIDER_LIGHT_LEVEL, m_ctrlLightLevel); //DDX_Control(pDX, IDC_BNT_CHECK_CAMERA_CONTROL, m_ctrlCameraControl); //DDX_Control(pDX, IDC_CHECK_AFM_TRACK, m_ctrlAFMTracking); DDX_Control(pDX, IDC_GRID_MOTOR_POS, m_ctrlMotorPos); DDX_Control(pDX, IDC_GRID_GLASS_POS, m_ctrlGlassPos); DDX_Control(pDX, IDC_GRID_GLASSCENTER_POS, m_ctrlGlassCenterPos); //DDX_Control(pDX, IDC_BUTTON_JOG_DOWN, m_ctrlJogDown); //DDX_Control(pDX, IDC_BUTTON_JOG_UP, m_ctrlJogUp); //DDX_Control(pDX, IDC_BUTTON_UI_LEFT, m_btnLeft); DDX_Control(pDX, IDC_RADIO_ZOOM_LEVEL_0, m_ctrlRadioSet[0]); DDX_Control(pDX, IDC_RADIO_ZOOM_LEVEL_1, m_ctrlRadioSet[1]); DDX_Control(pDX, IDC_RADIO_ZOOM_LEVEL_2, m_ctrlRadioSet[2]); DDX_Control(pDX, IDC_RADIO_ZOOM_LEVEL_3, m_ctrlRadioSet[3]); DDX_Control(pDX, IDC_RADIO_ZOOM_LEVEL_4, m_ctrlRadioSet[4]); DDX_Control(pDX, IDC_KEY_JOG_MOVE, m_ctrlKeyMoveJog); //DDX_Control(pDX, IDC_CHECK_UI_REDUCE, m_chekreduce); //DDX_Control(pDX, IDC_CHECK_USE_WSI_CONTROL, m_ctrlUseWSICon); //DDX_Control(pDX, IDC_SELECT_OFFSET_ON, SelectOffSetOn); // DDX_Control(pDX, IDC_NOT_USE_CENTER_POS, m_ctlNotUseCenterPos); //DDX_Control(pDX, IDC_BUTTON_UI_RIGHT1, m_btnRight); } BEGIN_MESSAGE_MAP(CDlgControl, CDialog) ON_BN_CLICKED(IDOK, &CDlgReviewCamera::OnBnClickedOk) ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_JOG_SPEED, &CDlgControl::OnNMReleasedcaptureSliderJogSpeed) ON_WM_HSCROLL() ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_LIGHT_LEVEL, &CDlgControl::OnNMReleasedcaptureSliderLightLevel) ON_BN_CLICKED(IDC_RADIO_ZOOM_LEVEL_0, &CDlgControl::OnBnClickedRadioZoomLevel) ON_BN_CLICKED(IDC_RADIO_ZOOM_LEVEL_1, &CDlgControl::OnBnClickedRadioZoomLevel) ON_BN_CLICKED(IDC_RADIO_ZOOM_LEVEL_2, &CDlgControl::OnBnClickedRadioZoomLevel) ON_BN_CLICKED(IDC_RADIO_ZOOM_LEVEL_3, &CDlgControl::OnBnClickedRadioZoomLevel) ON_BN_CLICKED(IDC_RADIO_ZOOM_LEVEL_4, &CDlgControl::OnBnClickedRadioZoomLevel) ON_BN_CLICKED(IDC_BNT_CHECK_CAMERA_CONTROL, &CDlgControl::OnBnClickedCheckCameraControl) ON_BN_CLICKED(IDC_BUTTON_MOTOR_GO_XY, &CDlgControl::OnBnClickedButtonMotorGoXy) ON_BN_CLICKED(IDC_BUTTON_GLASS_GO_XY, &CDlgControl::OnBnClickedButtonGlassGoXy) ON_BN_CLICKED(IDC_BUTTON_GLASSCENTER_GO_XY, &CDlgControl::OnBnClickedButtonGlasscenterGoXy) ON_BN_CLICKED(IDC_CHECK_AFM_TRACK, &CDlgControl::OnBnClickedCheckAfmTrack) ON_MESSAGE(UM_CAMERA_STATUS_UPDATE, &CDlgControl::OnCameraStatusUpdate) ON_MESSAGE(UM_SELECTED_MODULE_INDEX_UPDATE, &CDlgControl::OnUpdateSelectedModuleIndex) ON_WM_TIMER() ON_BN_CLICKED(IDC_BUTTON_TEST2, &CDlgControl::OnBnClickedButtonTest2) ON_BN_CLICKED(IDC_KEY_JOG_MOVE, &CDlgControl::OnBnClickedUseKeyboardCommand) ON_WM_KEYDOWN() ON_BN_CLICKED(IDC_CHECK_UI_REDUCE, &CDlgControl::OnBnClickedButtonUiExpand) ON_BN_CLICKED(IDC_BUTTON_UI_LEFT, &CDlgControl::OnBnClickedButtonUiLeft) ON_BN_CLICKED(IDC_BUTTON_UI_RIGHT1, &CDlgControl::OnBnClickedButtonUiRight1) // ON_BN_CLICKED(IDC_BUTTON_UI_RIGHT, &CDlgControl::OnBnClickedButtonUiRight) ON_BN_CLICKED(IDC_CHECK_USE_WSI_CONTROL, &CDlgControl::OnBnClickedCheckUseWsiControl) ON_BN_CLICKED(IDC_SELECT_OFFSET_ON, &CDlgControl::OnBnClickedSelectOffsetOn) ON_WM_ERASEBKGND() ON_WM_CTLCOLOR() ON_BN_CLICKED(IDC_BT_REVIEW_POPUP, &CDlgControl::OnBnClickedBtReviewPopup) ON_BN_CLICKED(IDC_CHECK_USE_SIMULATION, &CDlgControl::OnBnClickedCheckUseSimulation) ON_STN_DBLCLK(IDC_STATIC_MAGNIFICATION, &CDlgControl::OnDblclkStaticMagnification) ON_BN_CLICKED(IDC_BUTTON_ALIGNCAM_GRAB, &CDlgControl::OnBnClickedButtonAligncamGrab) END_MESSAGE_MAP() // CDlgControl 메시지 처리기입니다. void CDlgControl::OnBnClickedOk() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. // OnOK(); } BOOL CDlgControl::OnInitDialog() { CDialog::OnInitDialog(); // TODO: 여기에 추가 초기화 작업을 추가합니다. //skin { { { _GroupCtrlOption op = m_ctrlGroupCtrl.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_ctrlGroupCtrl.setCtrlOption(op); m_ctrlGroupCtrl.addControl(IDC_STATIC_CONTROLBOX, this); op.nTitleHeight = 0; m_ctrlGroupCtrl.setCtrlOption(op); //m_ctrlGroupCtrl.addControl(IDC_STATIC_VIEWMODE, this); } { _ColorButtonOption op = m_ctrlButtonColorCtrl.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_ctrlButtonColorCtrl.setCtrlOption(op); m_ctrlButtonColorCtrl.addControl(IDC_BUTTON_GLASS_GO_XY, this); m_ctrlButtonColorCtrl.addControl(IDC_BUTTON_GLASSCENTER_GO_XY, this); m_ctrlButtonColorCtrl.addControl(IDC_BUTTON_MOTOR_GO_XY, this); m_ctrlButtonColorCtrl.addControl(IDC_CHECK_AFM_TRACK, this); m_ctrlButtonColorCtrl.addControl(IDC_BUTTON_JOG_UP, this); m_ctrlButtonColorCtrl.addControl(IDC_BUTTON_JOG_DOWN,this); m_ctrlButtonColorCtrl.addControl(IDC_CHECK_UI_REDUCE,this); m_ctrlButtonColorCtrl.addControl(IDC_BUTTON_UI_LEFT,this); m_ctrlButtonColorCtrl.addControl(IDC_BUTTON_UI_RIGHT1,this); m_ctrlButtonColorCtrl.addControl(IDC_CHECK_USE_WSI_CONTROL,this); m_ctrlButtonColorCtrl.addControl(IDC_SELECT_OFFSET_ON,this); m_ctrlButtonColorCtrl.addControl(IDC_BT_REVIEW_POPUP, this); m_ctrlButtonColorCtrl.addControl(IDC_CHECK_USE_SIMULATION, this); //#3561 CF AOI Review Align 카메라 끊김 현상 조치 ADD START m_ctrlButtonColorCtrl.addControl(IDC_BUTTON_ALIGNCAM_GRAB, this); //#3561 CF AOI Review Align 카메라 끊김 현상 조치 ADD END op = m_ctrlCheckBoxColorCtrl.getCtrlOption(); op.nStyle = 1; op.nEdgeStyle = 1; op.nTextPushX = op.nTextPushY = 0; op.clrButtonShow = RGB(50,50,50); op.clrButtonPush = RGB(37, 190, 86); op.clrFontNormal = RGB(255,255,255); op.clrFontPush = RGB(255,255,255); m_ctrlCheckBoxColorCtrl.setCtrlOption(op); m_ctrlCheckBoxColorCtrl.addControl(IDC_BNT_CHECK_CAMERA_CONTROL, this); // m_ctrlCheckBoxColorCtrl.addControl(IDC_BUTTON_DRAW_PATTERN_INS, this); // m_ctrlCheckBoxColorCtrl.addControl(IDC_BUTTON_DRAW_ASG, this); // m_ctrlRadioColorCtrl[0].setCtrlOption(op); // m_ctrlRadioColorCtrl[0].addControl(IDC_RADIO_ZOOM_LEVEL_0,this); // m_ctrlRadioColorCtrl[1].setCtrlOption(op); // m_ctrlRadioColorCtrl[1].addControl(IDC_RADIO_ZOOM_LEVEL_1,this); // m_ctrlRadioColorCtrl[2].setCtrlOption(op); // m_ctrlRadioColorCtrl[2].addControl(IDC_RADIO_ZOOM_LEVEL_2,this); // m_ctrlRadioColorCtrl[3].setCtrlOption(op); // m_ctrlRadioColorCtrl[3].addControl(IDC_RADIO_ZOOM_LEVEL_3,this); // m_ctrlRadioColorCtrl[4].setCtrlOption(op); // m_ctrlRadioColorCtrl[4].addControl(IDC_RADIO_ZOOM_LEVEL_4,this); } { _StaticTextCtrlOption op = m_ctrlStaticTextCtrl.getCtrlOption(); op.clrTitle = RGB(255,255,255); op.nFontSize = 12; op.clrBack = RGB(53,83,113); m_ctrlStaticTextCtrl.setCtrlOption(op); m_ctrlStaticTextCtrl.addControl(IDC_STATIC_MAGNIFICATION , this); } } } InitGridCameraPos(); CString strFont = _T("MS Sans Serif"); m_ctrlJogCommand[JogCommand_Right].SetFontStatic(strFont, 15, RGB(0,0,0), FS_CENTER); m_ctrlJogCommand[JogCommand_Right].SetBackground(RGB(80,80,80)); m_ctrlJogCommand[JogCommand_Right].SetWindowText(_T("▶")); m_ctrlJogCommand[JogCommand_Top].SetFontStatic(strFont, 15, RGB(0,0,0), FS_CENTER); m_ctrlJogCommand[JogCommand_Top].SetBackground(RGB(80,80,80)); m_ctrlJogCommand[JogCommand_Top].SetWindowText(_T("▲")); m_ctrlJogCommand[JogCommand_AntiClock].SetFontStatic(strFont, 15, RGB(0,0,0), FS_CENTER); m_ctrlJogCommand[JogCommand_AntiClock].SetBackground(RGB(80,80,80)); m_ctrlJogCommand[JogCommand_AntiClock].SetWindowText(_T("↘")); m_ctrlJogCommand[JogCommand_Left].SetFontStatic(strFont, 15, RGB(0,0,0), FS_CENTER); m_ctrlJogCommand[JogCommand_Left].SetBackground(RGB(80,80,80)); m_ctrlJogCommand[JogCommand_Left].SetWindowText(_T("◀")); m_ctrlJogCommand[JogCommand_Bottom].SetFontStatic(strFont, 15, RGB(0,0,0), FS_CENTER); m_ctrlJogCommand[JogCommand_Bottom].SetBackground(RGB(80,80,80)); m_ctrlJogCommand[JogCommand_Bottom].SetWindowText(_T("▼")); m_ctrlJogCommand[JogCommand_Clock].SetFontStatic(strFont, 15, RGB(0,0,0), FS_CENTER); m_ctrlJogCommand[JogCommand_Clock].SetBackground(RGB(80,80,80)); m_ctrlJogCommand[JogCommand_Clock].SetWindowText(_T("↙")); //m_ctrlRadioSet[0].SetFontStatic(strFont, 15, RGB(0,0,0), FS_CENTER); // slider jog speed m_ctrlSliderJogSpeed.SetRange(0, 100); m_ctrlSliderJogSpeed.SetRangeMin(0); m_ctrlSliderJogSpeed.SetRangeMax(100); m_ctrlSliderJogSpeed.SetTicFreq(1); m_ctrlSliderJogSpeed.SetLineSize(1); m_ctrlSliderJogSpeed.SetPageSize(1); m_ctrlSliderJogSpeed.SetPos(20); m_ctrlLightLevel.SetRange(0, 100); m_ctrlLightLevel.SetRangeMin(0); m_ctrlLightLevel.SetRangeMax(100); m_ctrlLightLevel.SetTicFreq(1); m_ctrlLightLevel.SetLineSize(1); m_ctrlLightLevel.SetPageSize(1); m_ctrlLightLevel.SetPos(20); m_pCtrlCameraControl = m_ctrlCheckBoxColorCtrl.GetDlgItem(IDC_BNT_CHECK_CAMERA_CONTROL); //m_ctrlCameraControl.SetWindowText(_T("Grab")); m_pCtrlCameraControl->SetWindowText(_T("Grab")); m_ctrlAFMTracking = m_ctrlButtonColorCtrl.GetDlgItem(IDC_CHECK_AFM_TRACK); m_ctrlAFMTracking->SetWindowText(_T("Tracking")); //m_pCtrlCameraControl->SetWindowText(_T("")) m_ctrlJogUp = m_ctrlButtonColorCtrl.GetDlgItem(IDC_BUTTON_JOG_UP); m_ctrlJogDown = m_ctrlButtonColorCtrl.GetDlgItem(IDC_BUTTON_JOG_DOWN); m_chekreduce=m_ctrlButtonColorCtrl.GetDlgItem(IDC_CHECK_UI_REDUCE); m_btnLeft=m_ctrlButtonColorCtrl.GetDlgItem(IDC_BUTTON_UI_LEFT); m_btnRight=m_ctrlButtonColorCtrl.GetDlgItem(IDC_BUTTON_UI_RIGHT1); //버그 때문에 이거 넣어야지 바뀜 ;;; SetWindowTheme(GetDlgItem(IDC_RADIO_ZOOM_LEVEL_0)->GetSafeHwnd(), (LPCWSTR)TEXT(""), (LPCWSTR)TEXT("")); SetWindowTheme(GetDlgItem(IDC_RADIO_ZOOM_LEVEL_1)->GetSafeHwnd(), (LPCWSTR)TEXT(""), (LPCWSTR)TEXT("")); SetWindowTheme(GetDlgItem(IDC_RADIO_ZOOM_LEVEL_2)->GetSafeHwnd(), (LPCWSTR)TEXT(""), (LPCWSTR)TEXT("")); SetWindowTheme(GetDlgItem(IDC_RADIO_ZOOM_LEVEL_3)->GetSafeHwnd(), (LPCWSTR)TEXT(""), (LPCWSTR)TEXT("")); SetWindowTheme(GetDlgItem(IDC_RADIO_ZOOM_LEVEL_4)->GetSafeHwnd(), (LPCWSTR)TEXT(""), (LPCWSTR)TEXT("")); //m_ctrlRadioSet[0] = (CButton*)/*m_ctrlRadioColorCtrl[0].*/GetDlgItem(IDC_RADIO_ZOOM_LEVEL_0); //m_ctrlRadioSet[1] = (CButton*)/*m_ctrlRadioColorCtrl[1].*/GetDlgItem(IDC_RADIO_ZOOM_LEVEL_1); //m_ctrlRadioSet[2] = (CButton*)/*m_ctrlRadioColorCtrl[2].*/GetDlgItem(IDC_RADIO_ZOOM_LEVEL_2); //m_ctrlRadioSet[3] = (CButton*)/*m_ctrlRadioColorCtrl[3].*/GetDlgItem(IDC_RADIO_ZOOM_LEVEL_3); //m_ctrlRadioSet[4] = (CButton*)/*m_ctrlRadioColorCtrl[4].*/GetDlgItem(IDC_RADIO_ZOOM_LEVEL_4); m_ctrlUseWSICon = m_ctrlButtonColorCtrl.GetDlgItem(IDC_CHECK_USE_WSI_CONTROL); SelectOffSetOn = m_ctrlButtonColorCtrl.GetDlgItem(IDC_SELECT_OFFSET_ON); m_ctrlUserSimulation = m_ctrlButtonColorCtrl.GetDlgItem(IDC_CHECK_USE_SIMULATION); CString tmp; tmp.Format(_T("%d%%"), m_ctrlSliderJogSpeed.GetPos()); SetDlgItemText(IDC_STATIC_JOG_SPEED, tmp); tmp.Format(_T("%d%%"), m_ctrlLightLevel.GetPos()); SetDlgItemText(IDC_STATIC_LIGHT_LEVEL, tmp); (GetDlgItem(IDC_KEY_JOG_MOVE))->ShowWindow(FALSE); m_ctrlKeyMoveJog.SetFontStatic(strFont, 15, RGB(0,0,0), FS_CENTER); m_ctrlKeyMoveJog.SetBackground(RGB(240,240,240)); m_ctrlKeyMoveJog.SetWindowText(_T("Key Jog시작")); KeyboardCommandMode = new CDlgKeyJogLogin; return FALSE; // return TRUE unless you set the focus to a control // 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다. } void CDlgControl::OnNMReleasedcaptureSliderJogSpeed(NMHDR *pNMHDR, LRESULT *pResult) { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. if (m_pDC2P==NULL) return; double dValue = double(m_ctrlSliderJogSpeed.GetPos()) / 100.0; m_pDC2P->DC2P_JogSpeed(dValue); *pResult = 0; } BOOL CDlgControl::PreTranslateMessage(MSG* pMsg) { if(m_bCheckKeyJog) { m_ctrlKeyMoveJog.SetFocus(); KeyboardXYJogMove(pMsg); return __super::PreTranslateMessage(pMsg); } if (m_nJogDown != -1) { CRect rtRect; m_ctrlJogCommand[m_nJogDown].GetWindowRect(rtRect); if(!rtRect.PtInRect(pMsg->pt)) { m_ctrlJogCommand[m_nJogDown].SetBackground(RGB(80,80,80)); m_pDC2P->DC2P_JogCommand(m_nModuleIndex, m_nJogDown, 0); m_nJogDown = -1; } } if( pMsg->message == WM_CHAR ) { if(pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE ) { ::TranslateMessage(pMsg); ::DispatchMessage(pMsg); return TRUE; } } if( pMsg->message!=WM_LBUTTONDOWN && pMsg->message!=WM_LBUTTONUP) { return CDialog::PreTranslateMessage(pMsg); } if (m_pDC2P==NULL) { return CDialog::PreTranslateMessage(pMsg); } for (int nIdx=0; nIdxpt)) { if(pMsg->message == WM_LBUTTONDOWN) { m_ctrlJogCommand[nIdx].SetBackground(RGB(0,255,0)); m_pDC2P->DC2P_JogCommand(m_nModuleIndex, nIdx, 1); m_nJogDown = nIdx; } else if(pMsg->message == WM_LBUTTONUP) { m_ctrlJogCommand[nIdx].SetBackground(RGB(80,80,80)); m_pDC2P->DC2P_JogCommand(m_nModuleIndex, nIdx, 0); } m_ctrlJogCommand[nIdx].Invalidate(TRUE); return __super::PreTranslateMessage(pMsg); } m_ctrlJogCommand[nIdx].SetBackground(RGB(80,80,80)); m_ctrlJogCommand[nIdx].Invalidate(TRUE); } CRect rtJogUp; m_ctrlJogUp->GetWindowRect(rtJogUp); if(rtJogUp.PtInRect(pMsg->pt)) { if(pMsg->message == WM_LBUTTONDOWN) { m_pDC2P->DC2P_SetJogCommand(m_nModuleIndex, 1); } if (pMsg->message == WM_LBUTTONUP) { m_pDC2P->DC2P_SetJogCommand(m_nModuleIndex, 0); } } CRect rtJogDown; m_ctrlJogDown->GetWindowRect(rtJogDown); if(rtJogDown.PtInRect(pMsg->pt)) { if(pMsg->message == WM_LBUTTONDOWN) { m_pDC2P->DC2P_SetJogCommand(m_nModuleIndex, 2); } if (pMsg->message == WM_LBUTTONUP) { m_pDC2P->DC2P_SetJogCommand(m_nModuleIndex, 0); } } return CDialog::PreTranslateMessage(pMsg); } void CDlgControl::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다. CDialog::OnHScroll(nSBCode, nPos, pScrollBar); CString tmp; tmp.Format(_T("%d%%"), m_ctrlSliderJogSpeed.GetPos()); SetDlgItemText(IDC_STATIC_JOG_SPEED, tmp); tmp.Format(_T("%d%%"), m_ctrlLightLevel.GetPos()); SetDlgItemText(IDC_STATIC_LIGHT_LEVEL, tmp); } void CDlgControl::OnNMReleasedcaptureSliderLightLevel(NMHDR *pNMHDR, LRESULT *pResult) { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. if (m_pDC2P==NULL) return; CModuleStatus* pModuleStatus = m_pDC2P->DC2P_Get_Selected_module_Status(); if(pModuleStatus == NULL) return ; SCameraControl* pCameraControl = pModuleStatus->GetCameraControl(); if(pCameraControl == NULL) return ; int nLightLevelMax = pCameraControl->nLightLevelMax; int nLightLevelMin = pCameraControl->nLightLevelMin; int CalculateLightLevel = (nLightLevelMax - nLightLevelMin) * m_ctrlLightLevel.GetPos() / 100 + nLightLevelMin; m_pDC2P->DC2P_SetLightLevel(m_nModuleIndex, CalculateLightLevel); this->PostMessage(UM_LIGHT_LEVEL_UPDATE); *pResult = 0; } void CDlgControl::OnBnClickedCheckCameraControl() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. if (m_pDC2P==NULL) return; if (m_pCtrlCameraControl->GetCheck()) { m_pDC2P->DC2P_SetCameraControl(m_nModuleIndex, CameraControlLive); } else { m_pDC2P->DC2P_SetCameraControl(m_nModuleIndex, CameraControlStop); } } LRESULT CDlgControl::OnCameraStatusUpdate(WPARAM wParam, LPARAM lParam) { // if (m_pCameraControl==NULL) return 0; SCameraControl* pCameraControl = (SCameraControl*)lParam; if(pCameraControl == NULL) return 0; CModuleStatus* pModueStatus = m_pDC2P->DC2P_Get_Selected_module_Status(); if(pCameraControl->nCameraControl==CameraControlStop) { m_pCtrlCameraControl->SetWindowText(_T("Stop")); m_pCtrlCameraControl->SetCheck(FALSE); } else { m_pCtrlCameraControl->SetWindowText(_T("Grab")); m_pCtrlCameraControl->SetCheck(TRUE); } if (pCameraControl->bAFMTracking) { m_ctrlAFMTracking->SetWindowText(_T("Tracking")); m_ctrlAFMTracking->SetCheck(TRUE); } else { m_ctrlAFMTracking->SetWindowText(_T("Stop")); m_ctrlAFMTracking->SetCheck(FALSE); } int nLightLevelMax = pCameraControl->nLightLevelMax; int nLightLevelMin = pCameraControl->nLightLevelMin; int CalculateLightLevel = ((pCameraControl->nLightLevel - nLightLevelMin) * 100) / (nLightLevelMax - nLightLevelMin); m_ctrlLightLevel.SetPos(CalculateLightLevel); CString tmp; tmp.Format(_T("%d%%"), m_ctrlLightLevel.GetPos()); SetDlgItemText(IDC_STATIC_LIGHT_LEVEL, tmp); for (int i=0; i<5; i++) { if (pCameraControl->nZoomLevel==i) { m_ctrlRadioSet[i].SetCheck(1); } else { m_ctrlRadioSet[i].SetCheck(0); } } UpdateData(FALSE); return 1; } void CDlgControl::UpdateCameraControl(int nModuleIndex, const SCameraControl* pCameraControl, const SCameraInfo* pCameraInfo) { if (pCameraControl==NULL) return; if (m_nModuleIndex!=nModuleIndex) return; this->PostMessage(UM_CAMERA_STATUS_UPDATE, (WPARAM) nModuleIndex, (LPARAM) pCameraControl); } void CDlgControl::OnBnClickedRadioZoomLevel() { if (m_pDC2P==NULL) return; //UpdateData(TRUE); int nZoomLevel = -1; for (int i=0; i<5; i++) { if (m_ctrlRadioSet[i].GetCheck()) { nZoomLevel = i; break; } } for (int i = 0; i < 5; i++) { m_ctrlRadioSet[i].EnableWindow(FALSE); } SetTimer(ID_TIMER_DISABLE_MAG_BUTTON, 1000, NULL); m_pDC2P->DC2P_SetZoomLevel(m_nModuleIndex, nZoomLevel); m_pDC2P->DC2P_SetSelectedCamera(m_nModuleIndex, nZoomLevel); } void CDlgControl::InitGridCameraPos() { enum { POS_GRID_ROW_COUNT = 1, POS_GRID_COL_COUNT = 2 }; int nRowIdx, nColIdx, nRows, nCols; CString strTemp = _T(""); CRect rt; nRows = POS_GRID_ROW_COUNT; nCols = POS_GRID_COL_COUNT; m_ctrlMotorPos.GetClientRect(&rt); m_ctrlMotorPos.GetDefaultCell(TRUE, FALSE)->SetBackClr(RGB(180, 210, 247)); m_ctrlMotorPos.GetDefaultCell(FALSE, TRUE)->SetBackClr(RGB(180, 210, 247));; m_ctrlMotorPos.GetDefaultCell(FALSE, FALSE)->SetBackClr(RGB(255, 255, 255)); m_ctrlMotorPos.SetRowCount(nRows); m_ctrlMotorPos.SetColumnCount(nCols); m_ctrlMotorPos.SetFixedRowCount(0); m_ctrlMotorPos.SetFixedColumnCount(0); m_ctrlMotorPos.SetColumnWidth(0, rt.Width()/2); m_ctrlMotorPos.SetColumnWidth(1, rt.Width()/2); m_ctrlGlassPos.GetClientRect(&rt); m_ctrlGlassPos.GetDefaultCell(TRUE, FALSE)->SetBackClr(RGB(180, 210, 247)); m_ctrlGlassPos.GetDefaultCell(FALSE, TRUE)->SetBackClr(RGB(180, 210, 247));; m_ctrlGlassPos.GetDefaultCell(FALSE, FALSE)->SetBackClr(RGB(255, 255, 255)); m_ctrlGlassPos.SetRowCount(nRows); m_ctrlGlassPos.SetColumnCount(nCols); m_ctrlGlassPos.SetFixedRowCount(0); m_ctrlGlassPos.SetFixedColumnCount(0); m_ctrlGlassPos.SetColumnWidth(0, rt.Width()/2); m_ctrlGlassPos.SetColumnWidth(1, rt.Width()/2); m_ctrlGlassCenterPos.GetClientRect(&rt); m_ctrlGlassCenterPos.GetDefaultCell(TRUE, FALSE)->SetBackClr(RGB(180, 210, 247)); m_ctrlGlassCenterPos.GetDefaultCell(FALSE, TRUE)->SetBackClr(RGB(180, 210, 247));; m_ctrlGlassCenterPos.GetDefaultCell(FALSE, FALSE)->SetBackClr(RGB(255, 255, 255)); m_ctrlGlassCenterPos.SetRowCount(nRows); m_ctrlGlassCenterPos.SetColumnCount(nCols); m_ctrlGlassCenterPos.SetFixedRowCount(0); m_ctrlGlassCenterPos.SetFixedColumnCount(0); m_ctrlGlassCenterPos.SetColumnWidth(0, rt.Width()/2); m_ctrlGlassCenterPos.SetColumnWidth(1, rt.Width()/2); GV_ITEM Item; nRowIdx = 0; nColIdx = 0; //col Item.mask = GVIF_TEXT; Item.row = nRowIdx++; Item.col = nColIdx; strTemp.Format(_T("")); Item.strText = strTemp; m_ctrlMotorPos.SetItem(&Item); //col Item.mask = GVIF_TEXT; Item.row = nRowIdx++; Item.col = nColIdx; strTemp.Format(_T("")); Item.strText = strTemp; m_ctrlMotorPos.SetItem(&Item); nRowIdx = 0; nColIdx = 0; //col Item.mask = GVIF_TEXT; Item.row = nRowIdx++; Item.col = nColIdx; strTemp.Format(_T("")); Item.strText = strTemp; m_ctrlGlassPos.SetItem(&Item); //col Item.mask = GVIF_TEXT; Item.row = nRowIdx++; Item.col = nColIdx; strTemp.Format(_T("")); Item.strText = strTemp; m_ctrlGlassPos.SetItem(&Item); //col Item.mask = GVIF_TEXT; Item.row = nRowIdx++; Item.col = nColIdx; strTemp.Format(_T("")); Item.strText = strTemp; m_ctrlGlassCenterPos.SetItem(&Item); //col Item.mask = GVIF_TEXT; Item.row = nRowIdx++; Item.col = nColIdx; strTemp.Format(_T("")); Item.strText = strTemp; m_ctrlGlassCenterPos.SetItem(&Item); } void CDlgControl::OnCancel() { // TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다. //CDialog::OnCancel(); } void CDlgControl::OnBnClickedButtonMotorGoXy() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. CString strValue = m_ctrlMotorPos.GetItemText(0, 0); if (strValue.GetLength()<1) return; m_dGoPosX = _tcstod(strValue, NULL); strValue = m_ctrlMotorPos.GetItemText(0, 1); if (strValue.GetLength()<1) return; m_dGoPosY = _tcstod(strValue, NULL); if (m_pDC2P) { m_pDC2P->DC2P_MoveCommand(m_nModuleIndex, MOVE_CMD_X+MOVE_CMD_Y, m_dGoPosX, m_dGoPosY, 0); } } void CDlgControl::OnBnClickedButtonGlassGoXy() { if (m_pDC2P==NULL) return; CString strValue = m_ctrlGlassPos.GetItemText(0, 0); if (strValue.GetLength()<1) return; m_dGoPosX = _tcstod(strValue, NULL); strValue = m_ctrlGlassPos.GetItemText(0, 1); if (strValue.GetLength()<1) return; m_dGoPosY = _tcstod(strValue, NULL); m_pDC2P->DC2P_SetCameraGo(m_nModuleIndex, m_nMoveAxis, m_dGoPosX, m_dGoPosY); } void CDlgControl::OnBnClickedButtonGlasscenterGoXy() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. if (m_pDC2P==NULL) return; CString strValue = m_ctrlGlassCenterPos.GetItemText(0, 0); if (strValue.GetLength()<1) return; m_dGoPosX = _tcstod(strValue, NULL); strValue = m_ctrlGlassCenterPos.GetItemText(0, 1); if (strValue.GetLength()<1) return; m_dGoPosY = _tcstod(strValue, NULL); m_pDC2P->DC2P_SetCameraCenterGo(m_nModuleIndex, m_nMoveAxis, m_dGoPosX, m_dGoPosY); } void CDlgControl::OnBnClickedCheckAfmTrack() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. if (m_pDC2P==NULL) return; m_ctrlAFMTracking->EnableWindow(FALSE); SetTimer(ID_TIMER_DISABLE_AF_TRACKING_BUTTON, 1000, NULL); m_pDC2P->DC2P_SetAFMTracking(m_nModuleIndex, m_ctrlAFMTracking->GetCheck()); this->PostMessage(UM_AFM_LEVEL_UPDATE); } void CDlgControl::SetModuleIndex(int nModuleIndex) { m_nModuleIndex = nModuleIndex; CModuleStatus* pModuleStatus = m_pDC2P->DC2P_Get_Selected_module_Status(); if(pModuleStatus == NULL) return ; pModuleStatus->GetCameraControl(); VectorSMagnificInfo* pvMagnificInfo = pModuleStatus->GetVectorSMagnificInfo(); if(pvMagnificInfo == NULL) return ; for(int i = 0; i < 5; i++) { if(i < pvMagnificInfo->size()) { m_ctrlRadioSet[i].SetWindowText(pvMagnificInfo->at(i).strMagnificName); m_ctrlRadioSet[i].ShowWindow(SW_SHOW); } else { m_ctrlRadioSet[i].ShowWindow(SW_HIDE); } } } void CDlgControl::UpdateSelectedModuleIndex(int nModuleIndex, const CModuleStatus* pModuleStatus) { if (pModuleStatus==NULL) return; this->PostMessage(UM_SELECTED_MODULE_INDEX_UPDATE, (WPARAM) nModuleIndex, (LPARAM) pModuleStatus); } LRESULT CDlgControl::OnUpdateSelectedModuleIndex(WPARAM wParam, LPARAM lParam) { int nModuleIndex = (int)wParam; const CModuleStatus* pModuleStatus = (const CModuleStatus*)lParam; if (nModuleIndex<0) return 0; if(pModuleStatus == NULL) return 0; m_nModuleIndex = nModuleIndex; const SCameraControl *pCameraControl = pModuleStatus->GetCameraControl(); if(pCameraControl == NULL) return 0; int nMagIdx = 0; for(nMagIdx = 0; nMagIdx < pModuleStatus->GetMagnificInfoCount(); nMagIdx++) { const SMagnificInfo *pMagInfo = pModuleStatus->GetMagnificInfo(nMagIdx); m_ctrlRadioSet[nMagIdx].SetWindowText(pMagInfo->strMagnificName); m_ctrlRadioSet[nMagIdx].ShowWindow(SW_SHOW); if (pCameraControl->nZoomLevel==nMagIdx) { m_ctrlRadioSet[nMagIdx].SetCheck(1); } else { m_ctrlRadioSet[nMagIdx].SetCheck(0); } } for (; nMagIdx<5; nMagIdx++) { m_ctrlRadioSet[nMagIdx].ShowWindow(SW_HIDE); } if(pCameraControl->nCameraControl==CameraControlStop) { m_pCtrlCameraControl->SetWindowText(_T("Stop")); m_pCtrlCameraControl->SetCheck(FALSE); } else { m_pCtrlCameraControl->SetWindowText(_T("Grab")); m_pCtrlCameraControl->SetCheck(TRUE); } if (pCameraControl->bAFMTracking) { m_ctrlAFMTracking->SetWindowText(_T("Tracking")); m_ctrlAFMTracking->SetCheck(TRUE); } else { m_ctrlAFMTracking->SetWindowText(_T("Stop")); m_ctrlAFMTracking->SetCheck(FALSE); } int nLightLevelMax = pCameraControl->nLightLevelMax; int nLightLevelMin = pCameraControl->nLightLevelMin; int CalculateLightLevel = ((pCameraControl->nLightLevel - nLightLevelMin) * 100) / (nLightLevelMax - nLightLevelMin); m_ctrlLightLevel.SetPos(CalculateLightLevel); CString tmp; tmp.Format(_T("%d%%"), m_ctrlLightLevel.GetPos()); SetDlgItemText(IDC_STATIC_LIGHT_LEVEL, tmp); return 1; } void CDlgControl::OnTimer(UINT_PTR nIDEvent) { // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다. KillTimer(nIDEvent); switch (nIDEvent) { case ID_TIMER_DISABLE_MAG_BUTTON: for (int i = 0; i < 5; i++) { m_ctrlRadioSet[i].EnableWindow(TRUE); } break; case ID_TIMER_DISABLE_AF_TRACKING_BUTTON: m_ctrlAFMTracking->EnableWindow(TRUE); break; } __super::OnTimer(nIDEvent); } void CDlgControl::OnBnClickedButtonTest2() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. // wsi test code : glass position m_pDC2P->IRP2P_GetSequenceProcessor()->TestStartWsi(); } void CDlgControl::OnBnClickedUseKeyboardCommand() { if(m_bCheckKeyJog == FALSE) { KeyboardCommandMode->DoModal(); if(!KeyboardCommandMode->GetLoginSuccess()) return; m_bCheckKeyJog = TRUE; m_bMoveKeyJogCheck = TRUE; m_ctrlKeyMoveJog.SetWindowText(_T("Key Jog중지")); m_ctrlKeyMoveJog.SetBackground(RGB(255,0,0)); m_ctrlKeyMoveJog.SetFontStatic(_T("MS Sans Serif"), 15, RGB(255,255,255), FS_CENTER); m_ctrlSliderJogSpeed.SetPos(1); double dValue = double(m_ctrlSliderJogSpeed.GetPos()) / 100.0; m_pDC2P->DC2P_JogSpeed(dValue); CString tmp; tmp.Format(_T("%d%%"), m_ctrlSliderJogSpeed.GetPos()); SetDlgItemText(IDC_STATIC_JOG_SPEED, tmp); GetDlgItem( IDC_GRID_MOTOR_POS )->EnableWindow(FALSE); GetDlgItem( IDC_GRID_GLASS_POS )->EnableWindow(FALSE); GetDlgItem( IDC_GRID_GLASSCENTER_POS)->EnableWindow(FALSE); } else { m_bCheckKeyJog = FALSE; m_ctrlKeyMoveJog.SetWindowText(_T("Key Jog시작")); m_ctrlKeyMoveJog.SetBackground(RGB(240,240,240)); m_ctrlKeyMoveJog.SetFontStatic(_T("MS Sans Serif"), 15, RGB(0,0,0), FS_CENTER); for (int i = 0; iDC2P_JogCommand(m_nModuleIndex, i, 0); m_ctrlJogCommand[i].SetBackground(RGB(240,240,240)); } GetDlgItem( IDC_GRID_MOTOR_POS )->EnableWindow(TRUE); GetDlgItem( IDC_GRID_GLASS_POS )->EnableWindow(TRUE); GetDlgItem( IDC_GRID_GLASSCENTER_POS)->EnableWindow(TRUE); } } void CDlgControl::KeyboardXYJogMove(MSG* pMsg) { switch(pMsg->wParam) { case VK_LEFT: m_nKeyBoardCommand = 0; break; case VK_RIGHT: m_nKeyBoardCommand = 1; break; case VK_UP: m_nKeyBoardCommand = 2; break; case VK_DOWN: m_nKeyBoardCommand = 3; break; case VK_INSERT: //KeyboardAFMJogMove(1); m_nKeyBoardCommand = 4; break; case VK_DELETE: //KeyboardAFMJogMove(2); m_nKeyBoardCommand = 5; break; case VK_ESCAPE: m_bMoveKeyJogCheck = TRUE; OnBnClickedUseKeyboardCommand(); return; default: m_nKeyBoardCommand = -1; break; } if(pMsg->message == WM_KEYDOWN && m_bMoveKeyJogCheck == TRUE && m_nKeyBoardCommand != -1) { switch(pMsg->wParam) { case VK_INSERT: KeyboardAFMJogMove(1); break; case VK_DELETE: KeyboardAFMJogMove(2); break; } m_ctrlJogCommand[m_nKeyBoardCommand].SetBackground(RGB(0,255,0)); m_pDC2P->DC2P_JogCommand(m_nModuleIndex, m_nKeyBoardCommand, 1); m_bMoveKeyJogCheck = FALSE; m_nKeyJogDownIndex = m_nKeyBoardCommand; m_ctrlJogCommand[m_nKeyBoardCommand].Invalidate(TRUE); } if(pMsg->message == WM_KEYUP && m_bMoveKeyJogCheck == FALSE && m_nKeyBoardCommand != -1) { Sleep(33); if(m_nKeyJogDownIndex != m_nKeyBoardCommand) return; m_ctrlJogCommand[m_nKeyBoardCommand].SetBackground(RGB(80,80,80)); m_pDC2P->DC2P_JogCommand(m_nModuleIndex, m_nKeyBoardCommand, 0); m_bMoveKeyJogCheck = TRUE; m_ctrlJogCommand[m_nKeyBoardCommand].Invalidate(TRUE); } if(!m_bMoveKeyJogCheck) return; if(pMsg->message == WM_KEYUP) { KeyboardGlassXYInput(pMsg); switch(pMsg->wParam) { case VK_PRIOR: KeyboardMotionSpeedChange(TRUE); break; case VK_NEXT: KeyboardMotionSpeedChange(FALSE); break; case VK_HOME: KeyboardLightValueChange(TRUE); break; case VK_END: KeyboardLightValueChange(FALSE); break; case VK_INSERT: case VK_DELETE: KeyboardAFMJogMove(0); break; case VK_F1: m_pDC2P->DC2P_SetCameraGo(m_nModuleIndex, m_nMoveAxis, 8.0, 8.0); break; case VK_F2: m_pDC2P->DC2P_SetCameraGo(m_nModuleIndex, m_nMoveAxis, 1492, 8.0); break; case VK_F3: m_pDC2P->DC2P_SetCameraGo(m_nModuleIndex, m_nMoveAxis, 1492, 917); break; case VK_F4: m_pDC2P->DC2P_SetCameraGo(m_nModuleIndex, m_nMoveAxis, 8.0, 917); break; case 0x31: KeyboardpvMagnificChange(0); break; case 0x32: KeyboardpvMagnificChange(1); break; case 0x33: KeyboardpvMagnificChange(2); break; case 0x34: KeyboardpvMagnificChange(3); break; case 0x35: KeyboardpvMagnificChange(4); break; } } } void CDlgControl::KeyboardpvMagnificChange(int Magidx) { if(!m_ctrlRadioSet[Magidx].IsWindowEnabled()) return; CModuleStatus* pModuleStatus = m_pDC2P->DC2P_Get_Selected_module_Status(); if(pModuleStatus == NULL) return ; VectorSMagnificInfo* pvMagnificInfo = pModuleStatus->GetVectorSMagnificInfo(); if(pvMagnificInfo == NULL) return ; if(pvMagnificInfo->size() < (Magidx +1)) return; for (int i = 0; i < 5; i++) { if(i == Magidx) m_ctrlRadioSet[i].SetCheck(1); else m_ctrlRadioSet[i].SetCheck(0); } OnBnClickedRadioZoomLevel(); } void CDlgControl::KeyboardMotionSpeedChange(BOOL flag) { Sleep(100); if (m_pDC2P==NULL) return; int temp = m_ctrlSliderJogSpeed.GetPos(); if(flag) temp++; else temp--; if(temp == 101 || temp == -1) return; m_ctrlSliderJogSpeed.SetPos(temp); double dValue = double(m_ctrlSliderJogSpeed.GetPos()) / 100.0; m_pDC2P->DC2P_JogSpeed(dValue); CString tmp; tmp.Format(_T("%d%%"), m_ctrlSliderJogSpeed.GetPos()); SetDlgItemText(IDC_STATIC_JOG_SPEED, tmp); } void CDlgControl::KeyboardLightValueChange(BOOL flag) { Sleep(100); if (m_pDC2P==NULL) return; CModuleStatus* pModuleStatus = m_pDC2P->DC2P_Get_Selected_module_Status(); if(pModuleStatus == NULL) return ; SCameraControl* pCameraControl = pModuleStatus->GetCameraControl(); if(pCameraControl == NULL) return ; int nLightLevelMax = pCameraControl->nLightLevelMax; int nLightLevelMin = pCameraControl->nLightLevelMin; int temp = m_ctrlLightLevel.GetPos(); if(flag) temp = temp + 2; else temp--; if(temp == 101 || temp == -1) return; m_ctrlLightLevel.SetPos(temp); CString tmp; tmp.Format(_T("%d%%"), m_ctrlLightLevel.GetPos()); SetDlgItemText(IDC_STATIC_LIGHT_LEVEL, tmp); int CalculateLightLevel = (nLightLevelMax - nLightLevelMin) * m_ctrlLightLevel.GetPos() / 100 + nLightLevelMin; m_pDC2P->DC2P_SetLightLevel(m_nModuleIndex, CalculateLightLevel); this->PostMessage(UM_LIGHT_LEVEL_UPDATE); } void CDlgControl::KeyboardAFMJogMove(int flag) { Sleep(33); m_pDC2P->DC2P_SetJogCommand(m_nModuleIndex, flag); } void CDlgControl::KeyboardGlassXYInput(MSG* pMsg) { char num = NULL; switch(pMsg->wParam) { case VK_NUMPAD0: num = '0'; break; case VK_NUMPAD1: num = '1'; break; case VK_NUMPAD2: num = '2'; break; case VK_NUMPAD3: num = '3'; break; case VK_NUMPAD4: num = '4'; break; case VK_NUMPAD5: num = '5'; break; case VK_NUMPAD6: num = '6'; break; case VK_NUMPAD7: num = '7'; break; case VK_NUMPAD8: num = '8'; break; case VK_NUMPAD9: num = '9'; break; case VK_DECIMAL: num = '.'; break; case VK_BACK: { CString strValue = m_ctrlGlassPos.GetItemText(0, m_nGlassGridViewIndex); strValue.Delete(strValue.GetLength()-1, 1); m_strGlassPos = strValue; } break; case VK_TAB: { if(m_nGlassGridViewIndex == 0) m_nGlassGridViewIndex = 1; else m_nGlassGridViewIndex = 0; m_strGlassPos = m_ctrlGlassPos.GetItemText(0, m_nGlassGridViewIndex); } break; case VK_SPACE: OnBnClickedButtonGlassGoXy(); m_nGlassGridViewIndex = 0; break; } if(num != NULL) m_strGlassPos.AppendChar(num); m_ctrlGlassPos.SetItemText(0, m_nGlassGridViewIndex, m_strGlassPos); m_ctrlGlassPos.Invalidate(TRUE); } void CDlgControl::OnBnClickedButtonUiExpand() // UI 확장 { CMainFrame* pMain = (CMainFrame*)(AfxGetApp()->GetMainWnd()); CRect rt; CString str; pMain->GetWindowRect(&rt); m_chekreduce->GetWindowText(str); //m_chekreduce.GetWindowText(str); if( str=="Reduce") { m_chekreduce->SetWindowText( _T("Expand") ); pMain->MoveWindow( rt.left, rt.top, rt.left+(TOTAL_WINDOW_SIZE_X-CMD_WINDOW_SIZE_X), rt.Height() ); // Move Window OnBnClickedButtonUiRight1(); } else { m_chekreduce->SetWindowText( _T("Reduce") ); pMain->MoveWindow( m_rtOriginal.left, m_rtOriginal.top, TOTAL_TWO_MONITOR_WINDOW_SIZE_X, TOTAL_TWO_MONITOR_WINDOW_SIZE_Y ); // Move Window } } //void CDlgControl::OnBnClickedButtonUiCenter() //{ // // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. // MoveMainWindow( MonitorPos_CENTER ); //} void CDlgControl::MoveMainWindow( int nIdx ) { CMainFrame* pMain = (CMainFrame*)(AfxGetApp()->GetMainWnd()); int nMonitorCount = GetSystemMetrics(80 /*SM_CMONITORS*/); // Get Monitor Count. int nXResolution = GetSystemMetrics( SM_CXSCREEN ); int nWidth = 0; int nHeight = 0; CRect rt; pMain->GetWindowRect(&rt); int nXpoint = 0; int nYpoint = 0; CString str; m_chekreduce->GetWindowText(str); //m_chekreduce.GetWindowText(str); if( str=="Expand") { nWidth = (TOTAL_WINDOW_SIZE_X-CMD_WINDOW_SIZE_X); nHeight = TOTAL_TWO_MONITOR_WINDOW_SIZE_Y; switch (nIdx) { case MonitorPos_LEFT: { if( rt.left == 0 ) return; nXpoint = 0; nYpoint = 0; } break; case MonitorPos_CENTER: { nXpoint = (nXResolution-nWidth)/2; nYpoint = 0; } break; case MonitorPos_RIGHT: { if( rt.left >= nXResolution - nWidth - 1 ) return; nXpoint = nXResolution - nWidth; nYpoint = 0; } break; } ::MoveWindow( pMain->m_hWnd, nXpoint, nYpoint, nWidth, nHeight, TRUE ); // Move Window } } void CDlgControl::OnBnClickedButtonUiLeft() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. MoveMainWindow( MonitorPos_LEFT ); } //void CDlgControl::OnBnClickedButtonUiRight() //{ // // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다 // MoveMainWindow( MonitorPos_RIGHT ); //} void CDlgControl::OnBnClickedButtonUiRight1() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. MoveMainWindow( MonitorPos_RIGHT ); } //cmark //181218 void CDlgControl::OnBnClickedCheckUseWsiControl() { //각 Dlg 인자들을 가져오기 위해서 싱글톤 기법으로 구현 CDlgDefectList* pDlgdfectlist = CDlgDefectList::GetInstance(); pDlgdfectlist->GetSDefecFilter()->bUseWSI= m_ctrlUseWSICon->GetCheck(); CDlgDefectFilter* pDlgDefectfilter =CDlgDefectFilter::GetInstance(); if (pDlgDefectfilter->GetpDDF2P()) { pDlgDefectfilter->GetpDDF2P()->DDF2P_SetDefectFilter(pDlgdfectlist->GetSDefecFilter()); } } void CDlgControl::OnBnClickedSelectOffsetOn() { //m_ctrlOffsetOn.GetCheck(); m_pDC2P->DC2P_SetOffSetOn(); // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. } CDlgControl* CDlgControl::GetInstance()//컨트롤 { if(pDlgContol == NULL){ pDlgContol = new CDlgControl; } return pDlgContol; } CDlgControl* CDlgControl::pDlgContol; BOOL CDlgControl::OnEraseBkgnd(CDC* pDC) { // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다. CRect rect; GetClientRect(&rect); __super::OnEraseBkgnd(pDC); pDC->FillSolidRect(rect, RGB(38,38,38) ); return TRUE; } HBRUSH CDlgControl::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)); m_brushBk.DeleteObject(); m_brushBk.CreateSolidBrush(RGB(38,38,38)); hbr = m_brushBk; } /*if (pWnd->GetSafeHwnd() == GetDlgItem(IDC_RADIO_ZOOM_LEVEL_1)->GetSafeHwnd()) { pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor(RGB(255, 255, 255)); return hbr; }*/ // TODO: 기본값이 적당하지 않으면 다른 브러시를 반환합니다. return hbr; } void CDlgControl::OnBnClickedBtReviewPopup() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. m_pDC2P->DC2P_ShowReviewPopUP(); } void CDlgControl::OnBnClickedCheckUseSimulation() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. m_pDC2P->DC2P_SetSimulation(); //각 Dlg 인자들을 가져오기 위해서 싱글톤 기법으로 구현 CDlgDefectList* pDlgdfectlist = CDlgDefectList::GetInstance(); pDlgdfectlist->GetSDefecFilter()->bUseSimulation = m_ctrlUserSimulation->GetCheck(); CDlgDefectFilter* pDlgDefectfilter = CDlgDefectFilter::GetInstance(); if (pDlgDefectfilter->GetpDDF2P()) { pDlgDefectfilter->GetpDDF2P()->DDF2P_SetDefectFilter(pDlgdfectlist->GetSDefecFilter()); } } void CDlgControl::OnDblclkStaticMagnification() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. if ((GetDlgItem(IDC_CHECK_USE_SIMULATION))->IsWindowVisible()) { (GetDlgItem(IDC_CHECK_USE_SIMULATION))->ShowWindow(SW_HIDE); } else { (GetDlgItem(IDC_CHECK_USE_SIMULATION))->ShowWindow(SW_SHOW); } } //#3561 CF AOI Review Align 카메라 끊김 현상 조치 ADD START void CDlgControl::OnBnClickedButtonAligncamGrab() { CSequenceProcessor* pSequenceProcessor = m_pDC2P->IRP2P_GetSequenceProcessor(); if (pSequenceProcessor == NULL) return; if (m_bAlignCamGrab == FALSE) { pSequenceProcessor->AlignCamera_CameraControl(CameraControlLive); m_bAlignCamGrab = TRUE; } else { pSequenceProcessor->AlignCamera_CameraControl(CameraControlStop); m_bAlignCamGrab = FALSE; } // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. } //#3561 CF AOI Review Align 카메라 끊김 현상 조치 ADD END