// DlgReviewCamera.cpp : 구현 파일입니다. // #include "stdafx.h" #include "ReviewSystem.h" #include "DlgReviewCamera.h" #include "CHImageControls/CHImageProcess.h" // CDlgReviewCamera 대화 상자입니다. IMPLEMENT_DYNAMIC(CDlgReviewCamera, CDialog) CDlgReviewCamera::CDlgReviewCamera(CWnd* pParent, int nIndex) : CDialog(CDlgReviewCamera::IDD, pParent) , m_pCIV2P(NULL) { m_pCameraView = NULL; m_nModuleIndex = nIndex; Reset(); } CDlgReviewCamera::~CDlgReviewCamera() { Reset(); } void CDlgReviewCamera::Reset() { if (m_pCameraView) delete m_pCameraView; m_pCameraView = NULL; m_pDRC2P = NULL; } void CDlgReviewCamera::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CDlgReviewCamera, CDialog) ON_BN_CLICKED(IDOK, &CDlgReviewCamera::OnBnClickedOk) ON_BN_CLICKED(IDCANCEL, &CDlgReviewCamera::OnBnClickedCancel) ON_WM_RBUTTONDOWN() ON_BN_CLICKED(IDC_BUTTON_PREV_IMAGE, &CDlgReviewCamera::OnBnClickedButtonPrevImage) ON_BN_CLICKED(IDC_BUTTON_NEXT_IMAGE, &CDlgReviewCamera::OnBnClickedButtonNextImage) ON_WM_LBUTTONDOWN() ON_WM_LBUTTONDBLCLK() ON_BN_CLICKED(IDC_BUTTON_PREV_BUFFER, &CDlgReviewCamera::OnBnClickedButtonPrevBuffer) ON_BN_CLICKED(IDC_BUTTON_NEXT_BUFFER, &CDlgReviewCamera::OnBnClickedButtonNextBuffer) ON_WM_TIMER() ON_WM_RBUTTONDOWN() ON_WM_RBUTTONDBLCLK() END_MESSAGE_MAP() void CDlgReviewCamera::OnBnClickedOk() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. // OnOK(); } void CDlgReviewCamera::OnBnClickedCancel() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. // OnCancel(); } BOOL CDlgReviewCamera::OnInitDialog() { CDialog::OnInitDialog(); m_pCameraView = new CCameraViewReview(this); 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(311, 100, NULL); return TRUE; // return TRUE unless you set the focus to a control // 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다. } void CDlgReviewCamera::OnBnClickedButtonPrevImage() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. } void CDlgReviewCamera::OnBnClickedButtonNextImage() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. } BOOL CDlgReviewCamera::DestroyWindow() { // TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다. if (m_pCameraView) m_pCameraView->DestroyWindow(); m_SharedImageData.DeleteMemory(); return __super::DestroyWindow(); } void CDlgReviewCamera::OnLButtonDown(UINT nFlags, CPoint point) { __super::OnLButtonDown(nFlags, point); } void CDlgReviewCamera::OnLButtonDblClk(UINT nFlags, CPoint point) { // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다. if (m_pDRC2P && m_pCameraView) { int nScaleWidth, nScaleHeight, nWndCenterX, nWndCenterY; double dWidthScale, dHeightScale; nScaleWidth = m_pCameraView->GetScaleWidth(); nScaleHeight = m_pCameraView->GetScaleHeight(); dWidthScale = m_pCameraView->GetWidthScale(); dHeightScale = m_pCameraView->GetHeightScale(); nWndCenterX = nScaleWidth / 2; nWndCenterY = nScaleHeight / 2; int nDiffPixelX = (int)((point.x - nWndCenterX) / dWidthScale); int nDiffPixelY = (int)((point.y - nWndCenterY) / dHeightScale); m_pDRC2P->DRC2P_MoveMotorMouseDoubleClick(nDiffPixelX, nDiffPixelY); } __super::OnLButtonDblClk(nFlags, point); } void CDlgReviewCamera::OnBnClickedButtonPrevBuffer() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. } void CDlgReviewCamera::OnBnClickedButtonNextBuffer() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. } void CDlgReviewCamera::OnTimer(UINT_PTR nIDEvent) { // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다. if (nIDEvent==311 && m_pCameraView) { KillTimer(nIDEvent); if (m_SharedImageData.GetUpdated(m_nModuleIndex)) { if (m_SharedImageData.LockImageData(m_nModuleIndex)) { 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(311, 100, NULL); } __super::OnTimer(nIDEvent); } void CDlgReviewCamera::OnRButtonDblClk(UINT nFlags, CPoint point) { // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다. __super::OnRButtonDblClk(nFlags, point); } void CDlgReviewCamera::OnRButtonDown(UINT nFlags, CPoint point) { // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다. __super::OnRButtonDblClk(nFlags, point); }