// MeasureSetDlg.cpp : ʵÏÖÎļþ // #include "stdafx.h" #include "BlVisionPro.h" #include "MeasureSetDlg.h" #include "afxdialogex.h" #include "VisionRecipe.h" #include "VisionSetDlg.h" // CMeasureSetDlg ¶Ô»°¿ò IMPLEMENT_DYNAMIC(CMeasureSetDlg, CDialogEx) CMeasureSetDlg::CMeasureSetDlg(CWnd* pParent /*=NULL*/) : CDialogEx(IDD_DIALOG_MEASURE_SET, pParent) { m_dot = NULL; for (int i = 0; i < 4; i++) { m_inf[i].idxRefer = 0; m_inf[i].typePoint = 0; m_inf[i].modePoint = 0; m_inf[i].pointThres = 30; m_inf[i].modeNear = 0; m_inf[i].nearThres = 30; } m_firstPoint.x = 0; m_firstPoint.y = 0; m_secondPoint.x = 0; m_secondPoint.y = 0; } CMeasureSetDlg::~CMeasureSetDlg() { } void CMeasureSetDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_COMBO_POINT_REFER_MEASURE, m_combPointRefer[0]); DDX_Control(pDX, IDC_COMBO_POINT_TYPE_MEASURE, m_combPointType[0]); DDX_Control(pDX, IDC_COMBO_START_MODE, m_combStartMode[0]); DDX_Control(pDX, IDC_COMBO_END_MODE_START_MODE, m_combEndMode[0]); DDX_Control(pDX, IDC_COMBO_POINT_REFER_MEASURE2, m_combPointRefer[1]); DDX_Control(pDX, IDC_COMBO_POINT_TYPE_MEASURE2, m_combPointType[1]); DDX_Control(pDX, IDC_COMBO_START_MODE2, m_combStartMode[1]); DDX_Control(pDX, IDC_COMBO_END_MODE_START_MODE2, m_combEndMode[1]); DDX_Control(pDX, IDC_COMBO_POINT_REFER_MEASURE3, m_combPointRefer[2]); DDX_Control(pDX, IDC_COMBO_POINT_TYPE_MEASURE3, m_combPointType[2]); DDX_Control(pDX, IDC_COMBO_START_MODE3, m_combStartMode[2]); DDX_Control(pDX, IDC_COMBO_END_MODE_START_MODE3, m_combEndMode[2]); DDX_Control(pDX, IDC_COMBO_POINT_REFER_MEASURE4, m_combPointRefer[3]); DDX_Control(pDX, IDC_COMBO_POINT_TYPE_MEASURE4, m_combPointType[3]); DDX_Control(pDX, IDC_COMBO_START_MODE4, m_combStartMode[3]); DDX_Control(pDX, IDC_COMBO_END_MODE_START_MODE4, m_combEndMode[3]); DDX_Text(pDX, IDC_EDIT_START_THRES_MEASURE, m_inf[0].pointThres); DDX_Text(pDX, IDC_EDIT_END_THRES_MEASURE, m_inf[0].nearThres); DDX_Text(pDX, IDC_EDIT_START_THRES_MEASURE2, m_inf[1].pointThres); DDX_Text(pDX, IDC_EDIT_END_THRES_MEASURE2, m_inf[1].nearThres); DDX_Text(pDX, IDC_EDIT_START_THRES_MEASURE3, m_inf[2].pointThres); DDX_Text(pDX, IDC_EDIT_END_THRES_MEASURE3, m_inf[2].nearThres); DDX_Text(pDX, IDC_EDIT_START_THRES_MEASURE4, m_inf[3].pointThres); DDX_Text(pDX, IDC_EDIT_END_THRES_MEASURE4, m_inf[3].nearThres); DDX_Text(pDX, IDC_EDIT_POSE_X_MEASURE, m_firstPoint.x); DDX_Text(pDX, IDC_EDIT_POSE_Y_MEASURE, m_firstPoint.y); DDX_Text(pDX, IDC_EDIT_BOT_X_MEASURE, m_secondPoint.x); DDX_Text(pDX, IDC_EDIT_BOT_Y_MEASURE, m_secondPoint.y); } BEGIN_MESSAGE_MAP(CMeasureSetDlg, CDialogEx) ON_WM_CLOSE() ON_BN_CLICKED(IDC_BUTTON_SET_TOP_MEASURE, &CMeasureSetDlg::OnBnClickedButtonSetTopMeasure) ON_BN_CLICKED(IDC_BUTTON_DEL_TOP_MEASURE, &CMeasureSetDlg::OnBnClickedButtonDelTopMeasure) ON_BN_CLICKED(IDC_BUTTON_SET_BOT_MEASURE, &CMeasureSetDlg::OnBnClickedButtonSetBotMeasure) ON_BN_CLICKED(IDC_BUTTON_DEL_BOT_MEASURE, &CMeasureSetDlg::OnBnClickedButtonDelBotMeasure) ON_BN_CLICKED(IDC_BUTTON_DRAW_ROI_MEASURE, &CMeasureSetDlg::OnBnClickedButtonDrawRoiMeasure) ON_BN_CLICKED(IDC_BUTTON_DRAW_ROI_MEASURE2, &CMeasureSetDlg::OnBnClickedButtonDrawRoiMeasure2) END_MESSAGE_MAP() // CMeasureSetDlg ÏûÏ¢´¦Àí³ÌÐò BOOL CMeasureSetDlg::PreTranslateMessage(MSG* pMsg) { // TODO: ÔÚ´ËÌí¼ÓרÓôúÂëºÍ/»òµ÷ÓûùÀà if (pMsg->message == WM_KEYDOWN) { if ((pMsg->wParam == VK_RETURN) || (pMsg->wParam == VK_ESCAPE)) { return TRUE; } } return CDialogEx::PreTranslateMessage(pMsg); } BOOL CMeasureSetDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // TODO: ÔÚ´ËÌí¼Ó¶îÍâµÄ³õʼ»¯ InitControl(); ShowParamUi(); LockROI(-1); return TRUE; // return TRUE unless you set the focus to a control // Òì³£: OCX ÊôÐÔÒ³Ó¦·µ»Ø FALSE } void CMeasureSetDlg::SetDot(CCornerDistProcess *dot) { /* code */ m_dot = dot; } void CMeasureSetDlg::InitControl(void) { /* code */ for (int i = 0; i < 4; i++) { m_combPointRefer[i].InsertString(0, _T("Affine")); m_combPointRefer[i].InsertString(1, _T("Top Point")); m_combPointRefer[i].InsertString(2, _T("Bot Point")); m_combPointRefer[i].SetCurSel(0); m_combPointType[i].InsertString(0, _T("Start Point")); m_combPointType[i].InsertString(1, _T("End Point")); m_combPointType[i].SetCurSel(0); m_combStartMode[i].InsertString(0, _T("All")); m_combStartMode[i].InsertString(1, _T("W_T_B")); m_combStartMode[i].InsertString(2, _T("B_T_W")); m_combStartMode[i].SetCurSel(0); m_combEndMode[i].InsertString(0, _T("All")); m_combEndMode[i].InsertString(1, _T("W_T_B")); m_combEndMode[i].InsertString(2, _T("B_T_W")); m_combEndMode[i].SetCurSel(0); } } void CMeasureSetDlg::ShowParamUi(void) { /* code */ if (NULL == m_dot) return; m_firstPoint = m_dot->getPoint(4); m_secondPoint = m_dot->getPoint(5); MeasureInfo inf; for (int i = 0; i < 4; i++) { inf = m_dot->getMeasureInfo(i); m_inf[i] = inf; m_combPointRefer[i].SetCurSel(inf.idxRefer); m_combPointType[i].SetCurSel(inf.typePoint); m_combStartMode[i].SetCurSel(inf.modePoint); m_combEndMode[i].SetCurSel(inf.modeNear); } UpdateData(FALSE); } void CMeasureSetDlg::SaveCornerParam(void) { /* code */ if (NULL == m_dot) return; UpdateData(TRUE); m_dot->setPoint(m_firstPoint, 4); m_dot->setPoint(m_secondPoint, 5); MeasureInfo inf; for (int i = 0; i < 4; i++) { inf = m_inf[i]; inf.idxRefer = m_combPointRefer[i].GetCurSel(); inf.typePoint = m_combPointType[i].GetCurSel(); inf.modePoint = m_combStartMode[i].GetCurSel(); inf.modeNear = m_combEndMode[i].GetCurSel(); m_dot->setMeasureInfo(inf, i); } } void CMeasureSetDlg::OnClose() { // TODO: ÔÚ´ËÌí¼ÓÏûÏ¢´¦Àí³ÌÐò´úÂëºÍ/»òµ÷ÓÃĬÈÏÖµ SaveCornerParam(); CDialogEx::OnClose(); } void CMeasureSetDlg::OnBnClickedButtonSetTopMeasure() { // TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë } void CMeasureSetDlg::OnBnClickedButtonDelTopMeasure() { // TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë m_firstPoint.x = 0; m_firstPoint.y = 0; m_dot->setPoint(m_firstPoint, 4); UpdateData(FALSE); } void CMeasureSetDlg::OnBnClickedButtonSetBotMeasure() { // TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë } void CMeasureSetDlg::OnBnClickedButtonDelBotMeasure() { // TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë m_secondPoint.x = 0; m_secondPoint.y = 0; m_dot->setPoint(m_secondPoint, 5); UpdateData(FALSE); } void CMeasureSetDlg::OnBnClickedButtonDrawRoiMeasure() { // TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë CVisionSetDlg *pMainDlg = (CVisionSetDlg *)(CVisionRecipe::getInstance()->GetMainDlg()); if (NULL == pMainDlg) return; LockROI(1); } void CMeasureSetDlg::LockROI(int nType) { /* code */ if (1 == nType) { GetDlgItem(IDC_BUTTON_SET_TOP_MEASURE)->EnableWindow(TRUE); GetDlgItem(IDC_BUTTON_SET_BOT_MEASURE)->EnableWindow(FALSE); } else if (2 == nType) { GetDlgItem(IDC_BUTTON_SET_TOP_MEASURE)->EnableWindow(FALSE); GetDlgItem(IDC_BUTTON_SET_BOT_MEASURE)->EnableWindow(TRUE); } else { GetDlgItem(IDC_BUTTON_SET_TOP_MEASURE)->EnableWindow(FALSE); GetDlgItem(IDC_BUTTON_SET_BOT_MEASURE)->EnableWindow(FALSE); } } void CMeasureSetDlg::OnBnClickedButtonDrawRoiMeasure2() { // TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë CVisionSetDlg *pMainDlg = (CVisionSetDlg *)(CVisionRecipe::getInstance()->GetMainDlg()); if (NULL == pMainDlg) return; LockROI(2); }