// DlgReviewPopUp.cpp: 구현 파일 // //#include "pch.h" #include "stdafx.h" #include "ReviewSystem.h" #include "DlgReviewPopUp.h" #include "DlgReviewCamera.h" #include "CHImageControls/CHImageProcess.h" #include "afxdialogex.h" // DlgReviewPopUp 대화 상자 IMPLEMENT_DYNAMIC(DlgReviewPopUp, CDialogEx) DlgReviewPopUp::DlgReviewPopUp(CWnd* pParent, int nIndex) : CDialogEx(IDD_DLG_REVIEW_POPUP, pParent), m_pCIV2P(NULL) , m_nCameraNum(0) { m_pCameraView = NULL; m_nModuleIndex = nIndex; isGrab = FALSE; Reset(); } DlgReviewPopUp::~DlgReviewPopUp() { Reset(); } void DlgReviewPopUp::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_nCameraNum); DDX_Control(pDX, IDC_BT_CAMERA_GRAB, m_BtCrtlCameraGrab); } BEGIN_MESSAGE_MAP(DlgReviewPopUp, CDialogEx) ON_WM_TIMER() ON_WM_CLOSE() ON_BN_CLICKED(IDC_BT_CAMERA_GRAB, &DlgReviewPopUp::OnBnClickedBtCameraGrab) END_MESSAGE_MAP() // DlgReviewPopUp 메시지 처리기 //************************************ // Method: Reset // FullName: ::Reset // Access: public // Returns: void // Qualifier: //************************************ void DlgReviewPopUp::Reset() { if (m_pCameraView) delete m_pCameraView; m_pCameraView = NULL; m_pDRC2P = NULL; } BOOL DlgReviewPopUp::OnInitDialog() { CDialogEx::OnInitDialog(); m_pCameraView = new CCameraViewReview(this); //CRect curSize; //curSize.left = 0; //curSize.top = 0; //curSize.right = curSize.left + CAMERA_WINDOW_SIZE_X +5; //curSize.bottom = curSize.top + CAMERA_WINDOW_SIZE_Y - 35; //this->GetWindowRect(curSize); if (m_pCameraView) { CRect rect; rect.left = 0; rect.top = 0; rect.right = rect.left + CAMERA_WINDOW_SIZE_X; rect.bottom = rect.top + CAMERA_WINDOW_SIZE_Y - 40; m_pCameraView->Create(NULL, NULL, WS_CHILD | WS_VISIBLE | LBS_NOTIFY, rect, this, 0); m_pCameraView->SetViewName(_T("Review Camera")); m_pCameraView->SetDrawMode(1); m_pCameraView->ShowWindow(SW_SHOW); m_pCameraView->SetCIV2P(m_pCIV2P); } //수정하기 m_SharedImageData.CreateMemory(4); SetTimer(444, 100, NULL); return TRUE; // return TRUE unless you set the focus to a control // 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다. } BOOL DlgReviewPopUp::DestroyWindow() { // TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다. // TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다. if (m_pCameraView) m_pCameraView->DestroyWindow(); m_SharedImageData.DeleteMemory(); return __super::DestroyWindow(); } void DlgReviewPopUp::OnTimer(UINT_PTR nIDEvent) { // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다. // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다. if (nIDEvent == 444 && m_pCameraView) { KillTimer(nIDEvent); if (m_SharedImageData.GetUpdated(m_nModuleIndex)) { if (m_SharedImageData.LockImageData(m_nModuleIndex)) { m_nCameraNum = m_nModuleIndex; UpdateData(FALSE); const SSharedImageInfo* pImageInfo = m_SharedImageData.GetImageInfo(m_nModuleIndex); const BYTE* pImageData = m_SharedImageData.GetImageData(m_nModuleIndex); if (pImageInfo && pImageData) { if (m_pCameraView->SetOriginImage(pImageInfo->nImageWidth, pImageInfo->nImageHeight, pImageInfo->nImageChannels, pImageInfo->nImageWidthStep, pImageData)) { m_pCameraView->SetRulerGab(pImageInfo->dRulerGab); m_pCameraView->SetResolution(pImageInfo->dResolution); // um m_pCameraView->Invalidate(TRUE); } } m_SharedImageData.UnlockImageData(m_nModuleIndex); } } SetTimer(444, 100, NULL); } __super::OnTimer(nIDEvent); } void DlgReviewPopUp::OnClose() { // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다. m_pDRC2P->DC2P_ShowReviewPopUP(); CDialogEx::OnClose(); } void DlgReviewPopUp::OnBnClickedBtCameraGrab() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. if (isGrab==FALSE) { isGrab = TRUE; m_BtCrtlCameraGrab.SetWindowText(_T("Stop")); m_pDRC2P->DC2P_SetCameraControl(m_nModuleIndex, CameraControlLive); } else { isGrab = FALSE; m_BtCrtlCameraGrab.SetWindowText(_T("Grab")); m_pDRC2P->DC2P_SetCameraControl(m_nModuleIndex, CameraControlStop); } }