// DlgUserCmd.cpp : 구현 파일입니다. // #include "stdafx.h" #include "ReviewSystem.h" #include "DlgUserCmd.h" #include "afxdialogex.h" // CDlgUserCmd 대화 상자입니다. IMPLEMENT_DYNAMIC(CDlgUserCmd, CDialog) CDlgUserCmd::CDlgUserCmd(CWnd* pParent /*=NULL*/) : CDialog(CDlgUserCmd::IDD, pParent) { m_pDUC2P = NULL; } CDlgUserCmd::~CDlgUserCmd() { } void CDlgUserCmd::DoDataExchange(CDataExchange* pDX) { DDX_Control(pDX, IDC_STATIC_SIGNAL_SIGNAL_LOADING, m_ctrlSignalLoading); 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); CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CDlgUserCmd, CDialog) ON_BN_CLICKED(IDOK, &CDlgUserCmd::OnBnClickedOk) ON_BN_CLICKED(IDCANCEL, &CDlgUserCmd::OnBnClickedCancel) ON_WM_TIMER() ON_STN_DBLCLK(IDC_STATIC_SIGNAL_SIGNAL_LOADING, &CDlgUserCmd::OnStnDblclickStaticPlcSignalLoading) ON_STN_DBLCLK(IDC_STATIC_SIGNAL_SIGNAL_REVIEW_START, &CDlgUserCmd::OnStnDblclickStaticPlcSignalReviewStart) ON_STN_DBLCLK(IDC_STATIC_SIGNAL_SIGNAL_REVIEW_END, &CDlgUserCmd::OnStnDblclickStaticPlcSignalReviewEnd) ON_STN_DBLCLK(IDC_STATIC_SIGNAL_SIGNAL_UNLOADING, &CDlgUserCmd::OnStnDblclickStaticPlcSignalUnloading) ON_MESSAGE(UM_PROCESS_STATUS_UPDATE, &CDlgUserCmd::OnProcessStatusUpdate) END_MESSAGE_MAP() // CDlgUserCmd 메시지 처리기입니다. void CDlgUserCmd::OnBnClickedOk() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. //CDialog::OnOK(); } void CDlgUserCmd::OnBnClickedCancel() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. //CDialog::OnCancel(); } BOOL CDlgUserCmd::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_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("")); SetTimer(100, 1000, NULL); return TRUE; // return TRUE unless you set the focus to a control // 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다. } void CDlgUserCmd::OnTimer(UINT_PTR nIDEvent) { 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); } void CDlgUserCmd::UpdateProcessStatus(int nLineType, int nMachineType, int nProcessStatus, const CGlassResult* pGlassResult) { if (pGlassResult==NULL) return; this->PostMessage(UM_PROCESS_STATUS_UPDATE, (WPARAM)nProcessStatus); } LRESULT CDlgUserCmd::OnProcessStatusUpdate(WPARAM wParam, LPARAM lParam) { int nProcessStatus = (int)wParam; switch(nProcessStatus) { case PCControlSignal_0: m_ctrlSignalLoading.SetBackground(RGB(0,200,0)); 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_ctrlSignalReviewStart.SetBackground(RGB(0,200,0)); m_ctrlSignalLoading.SetBackground(RGB(10,10,10)); m_ctrlSignalReviewEnd.SetBackground(RGB(10,10,10)); m_ctrlSignalUnloading.SetBackground(RGB(10,10,10)); break; case PCControlSignal_2: m_ctrlSignalReviewEnd.SetBackground(RGB(0,200,0)); m_ctrlSignalLoading.SetBackground(RGB(10,10,10)); m_ctrlSignalReviewStart.SetBackground(RGB(10,10,10)); m_ctrlSignalUnloading.SetBackground(RGB(10,10,10)); break; case PCControlSignal_3: m_ctrlSignalUnloading.SetBackground(RGB(0,200,0)); m_ctrlSignalLoading.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_ctrlSignalReviewStart.Invalidate(TRUE); m_ctrlSignalReviewEnd.Invalidate(TRUE); m_ctrlSignalUnloading.Invalidate(TRUE); return 0; } void CDlgUserCmd::OnStnDblclickStaticPlcSignalLoading() { if (m_pDUC2P) { m_pDUC2P->DUC2P_SetUserCommand(PCControlSignal_4); } } void CDlgUserCmd::OnStnDblclickStaticPlcSignalReviewStart() { if (m_pDUC2P) { m_pDUC2P->DUC2P_SetUserCommand(PCControlSignal_5); } } void CDlgUserCmd::OnStnDblclickStaticPlcSignalReviewEnd() { if (m_pDUC2P) { m_pDUC2P->DUC2P_SetUserCommand(PCControlSignal_6); } } void CDlgUserCmd::OnStnDblclickStaticPlcSignalUnloading() { if (m_pDUC2P) { m_pDUC2P->DUC2P_SetUserCommand(PCControlSignal_7); } }