// DlgCommand.cpp : 구현 파일입니다. // #include "stdafx.h" #include "ReviewSystem.h" #include "DlgCommand.h" #include "MainFrm.h" //0420 종료버튼 추가 #include "CHReviewSetting/SystemInfo.h" // CDlgCommand 대화 상자입니다. IMPLEMENT_DYNAMIC(CDlgCommand, CDialog) CDlgCommand::CDlgCommand(CWnd* pParent /*=NULL*/) : CDialog(CDlgCommand::IDD, pParent) { m_pDC2P = NULL; m_nMachineType = -1; } CDlgCommand::~CDlgCommand() { } void CDlgCommand::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_STATIC_SIGNAL_SIGNAL_LOADING, m_ctrlSignalLoading); DDX_Control(pDX, IDC_STATIC_SIGNAL_SIGNAL_ALIGN_START, m_ctrlSignalAlignStart); DDX_Control(pDX, IDC_STATIC_SIGNAL_SIGNAL_READ_RAWFILE, m_ctrlSignalReadRawFile); DDX_Control(pDX, IDC_STATIC_SIGNAL_SIGNAL_REVIEW_START, m_ctrlSignalReviewStart); DDX_Control(pDX, IDC_STATIC_SIGNAL_SIGNAL_REVIEW_END, m_ctrlSignalReviewEnd); DDX_Control(pDX, IDC_STATIC_SIGNAL_SIGNAL_UNLOADING, m_ctrlSignalUnloading); DDX_Control(pDX, IDC_STATIC_DATE_TIME, m_ctrlDateTime); DDX_Control(pDX, IDC_BUTTON_PROGRAMEXIT, m_ButtonExit); } BEGIN_MESSAGE_MAP(CDlgCommand, CDialog) ON_BN_CLICKED(IDOK, &CDlgCommand::OnBnClickedOk) ON_BN_CLICKED(IDCANCEL, &CDlgCommand::OnBnClickedCancel) ON_WM_TIMER() #if REVIEW_SIMULATION_TEST_ENABLE ON_STN_DBLCLK(IDC_STATIC_SIGNAL_SIGNAL_LOADING, &CDlgCommand::OnStnDblclickStaticPlcSignalLoading) ON_STN_DBLCLK(IDC_STATIC_SIGNAL_SIGNAL_ALIGN_START, &CDlgCommand::OnStnDblclickStaticPlcSignalAlignStart) ON_STN_DBLCLK(IDC_STATIC_SIGNAL_SIGNAL_READ_RAWFILE, &CDlgCommand::OnStnDblclickStaticPlcSignalReadRawFile) ON_STN_DBLCLK(IDC_STATIC_SIGNAL_SIGNAL_REVIEW_START, &CDlgCommand::OnStnDblclickStaticPlcSignalReviewStart) ON_STN_DBLCLK(IDC_STATIC_SIGNAL_SIGNAL_REVIEW_END, &CDlgCommand::OnStnDblclickStaticPlcSignalReviewEnd) ON_STN_DBLCLK(IDC_STATIC_SIGNAL_SIGNAL_UNLOADING, &CDlgCommand::OnStnDblclickStaticPlcSignalUnloading) #endif ON_MESSAGE(UM_SIGNAL_SIGNAL_UPDATE, &CDlgCommand::OnPlcSignalUpdate) ON_MESSAGE(UM_PROCESS_STATUS_UPDATE, &CDlgCommand::OnProcessStatusUpdate) ON_STN_DBLCLK(IDC_STATIC_DATE_TIME, &CDlgCommand::OnStnDblclickStaticDateTime) ON_WM_ERASEBKGND() ON_WM_CTLCOLOR() ON_BN_CLICKED(IDC_BUTTON_PROGRAMEXIT, &CDlgCommand::OnBnClickedButtonProgramexit) END_MESSAGE_MAP() // CDlgCommand 메시지 처리기입니다. void CDlgCommand::OnBnClickedOk() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. //OnOK(); } void CDlgCommand::OnBnClickedCancel() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. // OnCancel(); } BOOL CDlgCommand::OnInitDialog() { CDialog::OnInitDialog(); // TODO: 여기에 추가 초기화 작업을 추가합니다. CString strFont = _T("MS Sans Serif"); m_ctrlSignalLoading.SetFontStatic(strFont, 9, RGB(240,240,240), FS_CENTER | FS_BOLD); m_ctrlSignalLoading.SetBackground(RGB(10,10,10)); m_ctrlSignalLoading.SetWindowText(_T("LOADING")); m_ctrlSignalAlignStart.SetFontStatic(strFont, 9, RGB(240,240,240), FS_CENTER | FS_BOLD); m_ctrlSignalAlignStart.SetBackground(RGB(10,10,10)); m_ctrlSignalAlignStart.SetWindowText(_T("ALIGN START")); m_ctrlSignalReadRawFile.SetFontStatic(strFont, 9, RGB(240,240,240), FS_CENTER | FS_BOLD); m_ctrlSignalReadRawFile.SetBackground(RGB(10,10,10)); m_ctrlSignalReadRawFile.SetWindowText(_T("READRAWFILE")); m_ctrlSignalReviewStart.SetFontStatic(strFont, 9, RGB(240,240,240), FS_CENTER | FS_BOLD); m_ctrlSignalReviewStart.SetBackground(RGB(10,10,10)); m_ctrlSignalReviewStart.SetWindowText(_T("REVIEW START")); m_ctrlSignalReviewEnd.SetFontStatic(strFont, 9, RGB(240,240,240), FS_CENTER | FS_BOLD); m_ctrlSignalReviewEnd.SetBackground(RGB(10,10,10)); m_ctrlSignalReviewEnd.SetWindowText(_T("REVIEW END")); m_ctrlSignalUnloading.SetFontStatic(strFont, 9, RGB(240,240,240), FS_CENTER | FS_BOLD); m_ctrlSignalUnloading.SetBackground(RGB(10,10,10)); m_ctrlSignalUnloading.SetWindowText(_T("UNLOADING")); m_ctrlDateTime.SetFontStatic(_T("Arial"), 20, RGB(255,255,0), FS_BOLD | FS_ANTIALIAS | FS_CENTER); m_ctrlDateTime.SetBackground(RGB(0,0,0)); m_ctrlDateTime.SetWindowText(_T("")); m_ButtonExit.LoadBitmaps(IDB_BITMAP2, NULL, NULL, NULL); // 0421 kyh 종료 버튼 비트맵추가 m_ButtonExit.SizeToContent(); // 0421 kyh 종료 버튼 비트맵추가 SetTimer(100, 1000, NULL); return TRUE; // return TRUE unless you set the focus to a control // 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다. } void CDlgCommand::OnTimer(UINT_PTR nIDEvent) { // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다. CTime time =CTime::GetCurrentTime(); CString strTime = _T(""); strTime.Format(_T("%04d-%02d-%02d %02d:%02d:%02d"), time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond()); m_ctrlDateTime.SetWindowText(strTime); CDialog::OnTimer(nIDEvent); } BOOL CDlgCommand::PreTranslateMessage(MSG* pMsg) { // TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다. return CDialog::PreTranslateMessage(pMsg); } LRESULT CDlgCommand::OnProcessStatusUpdate(WPARAM wParam, LPARAM lParam) { switch (m_nLineType) { case SystemLine_CPJT: { switch(m_nProcessStatus) { case PCControlSignal_0: // Loading m_ctrlSignalLoading.SetBackground(RGB(0,200,0)); m_ctrlSignalAlignStart.SetBackground(RGB(10,10,10)); m_ctrlSignalReadRawFile.SetBackground(RGB(10,10,10)); m_ctrlSignalReviewStart.SetBackground(RGB(10,10,10)); m_ctrlSignalReviewEnd.SetBackground(RGB(10,10,10)); m_ctrlSignalUnloading.SetBackground(RGB(10,10,10)); break; case PCControlSignal_1: // Align Start m_ctrlSignalAlignStart.SetBackground(RGB(0,200,0)); m_ctrlSignalLoading.SetBackground(RGB(10,10,10)); m_ctrlSignalReadRawFile.SetBackground(RGB(10,10,10)); m_ctrlSignalReviewStart.SetBackground(RGB(10,10,10)); m_ctrlSignalReviewEnd.SetBackground(RGB(10,10,10)); m_ctrlSignalUnloading.SetBackground(RGB(10,10,10)); break; case PCControlSignal_2: // Align End m_ctrlSignalReadRawFile.SetBackground(RGB(0,200,0)); m_ctrlSignalLoading.SetBackground(RGB(10,10,10)); m_ctrlSignalAlignStart.SetBackground(RGB(10,10,10)); m_ctrlSignalReviewStart.SetBackground(RGB(10,10,10)); m_ctrlSignalReviewEnd.SetBackground(RGB(10,10,10)); m_ctrlSignalUnloading.SetBackground(RGB(10,10,10)); break; case PCControlSignal_3: // Review Start m_ctrlSignalReviewStart.SetBackground(RGB(0,200,0)); m_ctrlSignalLoading.SetBackground(RGB(10,10,10)); m_ctrlSignalAlignStart.SetBackground(RGB(10,10,10)); m_ctrlSignalReadRawFile.SetBackground(RGB(10,10,10)); m_ctrlSignalReviewEnd.SetBackground(RGB(10,10,10)); m_ctrlSignalUnloading.SetBackground(RGB(10,10,10)); break; case PCControlSignal_4: // Review End m_ctrlSignalReviewEnd.SetBackground(RGB(0,200,0)); m_ctrlSignalLoading.SetBackground(RGB(10,10,10)); m_ctrlSignalAlignStart.SetBackground(RGB(10,10,10)); m_ctrlSignalReadRawFile.SetBackground(RGB(10,10,10)); m_ctrlSignalReviewStart.SetBackground(RGB(10,10,10)); m_ctrlSignalUnloading.SetBackground(RGB(10,10,10)); break; case PCControlSignal_5: // Unloading m_ctrlSignalUnloading.SetBackground(RGB(0,200,0)); m_ctrlSignalLoading.SetBackground(RGB(10,10,10)); m_ctrlSignalAlignStart.SetBackground(RGB(10,10,10)); m_ctrlSignalReadRawFile.SetBackground(RGB(10,10,10)); m_ctrlSignalReviewStart.SetBackground(RGB(10,10,10)); m_ctrlSignalReviewEnd.SetBackground(RGB(10,10,10)); break; } m_ctrlSignalLoading.Invalidate(TRUE); m_ctrlSignalAlignStart.Invalidate(TRUE); m_ctrlSignalReadRawFile.Invalidate(TRUE); m_ctrlSignalReviewStart.Invalidate(TRUE); m_ctrlSignalReviewEnd.Invalidate(TRUE); m_ctrlSignalUnloading.Invalidate(TRUE); } break; } return 0; } LRESULT CDlgCommand::OnPlcSignalUpdate(WPARAM wParam, LPARAM lParam) { switch (m_nLineType) { case SystemLine_CPJT: { switch(m_nProcessStatus) { case PCControlSignal_0: m_ctrlSignalLoading.SetBackground(RGB(0,200,0)); m_ctrlSignalAlignStart.SetBackground(RGB(10,10,10)); m_ctrlSignalReadRawFile.SetBackground(RGB(10,10,10)); m_ctrlSignalReviewStart.SetBackground(RGB(10,10,10)); m_ctrlSignalReviewEnd.SetBackground(RGB(10,10,10)); m_ctrlSignalUnloading.SetBackground(RGB(10,10,10)); break; case PCControlSignal_1: m_ctrlSignalAlignStart.SetBackground(RGB(0,200,0)); m_ctrlSignalLoading.SetBackground(RGB(10,10,10)); m_ctrlSignalReadRawFile.SetBackground(RGB(10,10,10)); m_ctrlSignalReviewStart.SetBackground(RGB(10,10,10)); m_ctrlSignalReviewEnd.SetBackground(RGB(10,10,10)); m_ctrlSignalUnloading.SetBackground(RGB(10,10,10)); break; case PCControlSignal_2: m_ctrlSignalReadRawFile.SetBackground(RGB(0,200,0)); m_ctrlSignalLoading.SetBackground(RGB(10,10,10)); m_ctrlSignalAlignStart.SetBackground(RGB(10,10,10)); m_ctrlSignalReviewStart.SetBackground(RGB(10,10,10)); m_ctrlSignalReviewEnd.SetBackground(RGB(10,10,10)); m_ctrlSignalUnloading.SetBackground(RGB(10,10,10)); break; case PCControlSignal_3: m_ctrlSignalReviewStart.SetBackground(RGB(0,200,0)); m_ctrlSignalLoading.SetBackground(RGB(10,10,10)); m_ctrlSignalAlignStart.SetBackground(RGB(10,10,10)); m_ctrlSignalReadRawFile.SetBackground(RGB(10,10,10)); m_ctrlSignalReviewEnd.SetBackground(RGB(10,10,10)); m_ctrlSignalUnloading.SetBackground(RGB(10,10,10)); break; case PCControlSignal_4: m_ctrlSignalReviewEnd.SetBackground(RGB(0,200,0)); m_ctrlSignalLoading.SetBackground(RGB(10,10,10)); m_ctrlSignalAlignStart.SetBackground(RGB(10,10,10)); m_ctrlSignalReadRawFile.SetBackground(RGB(10,10,10)); m_ctrlSignalReviewStart.SetBackground(RGB(10,10,10)); m_ctrlSignalUnloading.SetBackground(RGB(10,10,10)); break; case PCControlSignal_5: m_ctrlSignalUnloading.SetBackground(RGB(0,200,0)); m_ctrlSignalLoading.SetBackground(RGB(10,10,10)); m_ctrlSignalAlignStart.SetBackground(RGB(10,10,10)); m_ctrlSignalReadRawFile.SetBackground(RGB(10,10,10)); m_ctrlSignalReviewStart.SetBackground(RGB(10,10,10)); m_ctrlSignalReviewEnd.SetBackground(RGB(10,10,10)); break; } m_ctrlSignalLoading.Invalidate(TRUE); m_ctrlSignalAlignStart.Invalidate(TRUE); m_ctrlSignalReadRawFile.Invalidate(TRUE); m_ctrlSignalReviewStart.Invalidate(TRUE); m_ctrlSignalReviewEnd.Invalidate(TRUE); m_ctrlSignalUnloading.Invalidate(TRUE); } break; } return 0; } void CDlgCommand::UpdateProcessStatus(int nLineType, int nMachineType, int nProcessStatus, const CGlassResult* pGlassResult) { if (pGlassResult==NULL) return; m_nProcessStatus = nProcessStatus; this->PostMessage(UM_PROCESS_STATUS_UPDATE); } void CDlgCommand::OnStnDblclickStaticPlcSignalLoading() { if (m_pDC2P) { m_ctrlSignalLoading.SetBackground(RGB(200,200,0)); switch(m_nLineType) { case SystemLine_CPJT: m_pDC2P->DC2P_SetUserCommand(PCControlSignal_0); break; default: m_pDC2P->DC2P_SetUserCommand(PCControlSignal_4); break; } } } void CDlgCommand::OnStnDblclickStaticPlcSignalAlignStart() { if (m_pDC2P) { m_ctrlSignalAlignStart.SetBackground(RGB(200,200,0)); switch(m_nLineType) { case SystemLine_CPJT: m_pDC2P->DC2P_SetUserCommand(PCControlSignal_1); break; default: m_pDC2P->DC2P_SetUserCommand(PCControlSignal_5); break; } } } void CDlgCommand::OnStnDblclickStaticPlcSignalReadRawFile() { if (m_pDC2P) { m_ctrlSignalReadRawFile.SetBackground(RGB(200,200,0)); switch(m_nLineType) { case SystemLine_CPJT: m_pDC2P->DC2P_SetUserCommand(PCControlSignal_2); break; default: m_pDC2P->DC2P_SetUserCommand(PCControlSignal_6); break; } } } void CDlgCommand::OnStnDblclickStaticPlcSignalReviewStart() { if (m_pDC2P) { m_ctrlSignalReviewStart.SetBackground(RGB(200,200,0)); switch(m_nLineType) { case SystemLine_CPJT: { m_pDC2P->DC2P_SetUserCommand(PCControlSignal_3); break; } default: { break; } } } } void CDlgCommand::OnStnDblclickStaticPlcSignalReviewEnd() { if (m_pDC2P) { m_ctrlSignalReviewEnd.SetBackground(RGB(200,200,0)); switch(m_nLineType) { case SystemLine_CPJT: { m_pDC2P->DC2P_SetUserCommand(PCControlSignal_4); break; } default: { break; } } } } void CDlgCommand::OnStnDblclickStaticPlcSignalUnloading() { if (m_pDC2P) { m_ctrlSignalUnloading.SetBackground(RGB(200,200,0)); switch(m_nLineType) { case SystemLine_CPJT: { m_pDC2P->DC2P_SetUserCommand(PCControlSignal_12); break; } default: { break; } } } } void CDlgCommand::OnStnDblclickStaticDateTime() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. if (m_pDC2P) { m_pDC2P->DC2P_SetUserCommand(-1); } } BOOL CDlgCommand::SetLineType(int nType) { m_nLineType = nType; return TRUE; } BOOL CDlgCommand::SetMachineType(int nType) { m_nMachineType = nType; return TRUE; } BOOL CDlgCommand::OnEraseBkgnd(CDC* pDC) { // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다. CRect rect; GetClientRect(&rect); __super::OnEraseBkgnd(pDC); pDC->FillSolidRect(rect, RGB(38,38,38) ); return TRUE; } HBRUSH CDlgCommand::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; } void CDlgCommand::OnBnClickedButtonProgramexit() //0420 kyh 리뷰 종료 버튼 추가 { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. CMainFrame *pMain = (CMainFrame*)AfxGetMainWnd(); pMain->OnClose(); }