// 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);
|
}
|