// CornerDistSetDlg.cpp : ʵÏÖÎļþ // #include "stdafx.h" #include "BlVisionPro.h" #include "CornerDistSetDlg.h" #include "afxdialogex.h" #include "VisionBufferPro.h" #include "VisionSetDlg.h" #include "VisionBufferPro.h" #include "MeasureSetDlg.h" // CCornerDistSetDlg ¶Ô»°¿ò IMPLEMENT_DYNAMIC(CCornerDistSetDlg, CDialogEx) CCornerDistSetDlg::CCornerDistSetDlg(CWnd* pParent /*=NULL*/) : CDialogEx(IDD_DLG_DIST_CORNER, pParent) , m_id(0) , m_strName(_T("NULL")) , m_refer(100) , m_refer_(100) , m_minValue(0) , m_maxValue(0) , m_minValue2(0) , m_maxValue2(0) , m_incValue(0) , m_incValue2(0) { m_topMark.x = 0; m_topMark.y = 0; m_botMark.x = 0; m_botMark.y = 0; m_topPoint.x = 0; m_topPoint.y = 0; m_botPoint.x = 0; m_botPoint.y = 0; m_pos.x = 0; m_pos.y = 0; m_eDir = DIMENSION_NONE; m_dotDist = NULL; m_dot = NULL; } CCornerDistSetDlg::~CCornerDistSetDlg() { SaveDistCorner(); SaveDistDotProcess(); } void CCornerDistSetDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_LIST_DIST_DOT, m_listCornerPoint); DDX_Control(pDX, IDC_COMBOMK_FIRST_REFER_TYPE_DIST, m_combFrirtRefer); //First Refer DDX_Text(pDX, IDC_EDIT_TOP_MARK_X_DIST, m_topMark.x); //Top Mark DDX_Text(pDX, IDC_EDIT_TOP_MARK_Y_DIST, m_topMark.y); DDX_Text(pDX, IDC_EDIT_BOT_MARK_X_DIST, m_botMark.x); //Bot Mark DDX_Text(pDX, IDC_EDIT_BOT_MARK_Y_DIST, m_botMark.y); DDX_Text(pDX, IDC_EDIT_TOP_POINT_X_DIST, m_topPoint.x); //Top Point DDX_Text(pDX, IDC_EDIT_TOP_POINT_Y_DIST, m_topPoint.y); DDX_Text(pDX, IDC_EDIT_BOT_POINT_X_DIST, m_botPoint.x); //Bot Point DDX_Text(pDX, IDC_EDIT_BOT_POINT_Y_DIST, m_botPoint.y); DDX_Text(pDX, IDC_EDIT_ID_DIST, m_id); DDX_Text(pDX, IDC_EDIT_NAME_DIST, m_strName); DDX_Text(pDX, IDC_EDIT_POS_X_DIST, m_pos.x); DDX_Text(pDX, IDC_EDIT_POS_Y_DIST, m_pos.y); DDX_Text(pDX, IDC_EDIT_INC_REFER_DIST, m_refer); DDX_Text(pDX, IDC_EDIT_DEC_REFER_DIST, m_refer_); DDX_Control(pDX, IDC_COMBO_DIST_MODE_DIST, m_combDistMode); //DIST Mode DDX_Text(pDX, IDC_EDIT_MIN_VAL_DIST, m_minValue); DDX_Text(pDX, IDC_EDIT_MAX_VAL_DIST, m_maxValue); DDX_Control(pDX, IDC_COMBO_DIST_MODE_DIST2, m_combDistMode2); //DIST Mode DDX_Text(pDX, IDC_EDIT_MIN_VAL_DIST2, m_minValue2); DDX_Text(pDX, IDC_EDIT_MAX_VAL_DIST2, m_maxValue2); DDX_Control(pDX, IDC_COMBO_NG_TYPE_DIST, m_combNgType); //DIST Mode DDX_Control(pDX, IDC_COMBO_NG_TYPE_DIST2, m_combNgType2); //DIST Mode DDX_Text(pDX, IDC_EDIT_INC_DIST, m_incValue); DDX_Text(pDX, IDC_EDIT_INC_DIST2, m_incValue2); } BEGIN_MESSAGE_MAP(CCornerDistSetDlg, CDialogEx) ON_WM_CLOSE() ON_NOTIFY(NM_CLICK, IDC_LIST_DIST_DOT, &CCornerDistSetDlg::OnNMClickListDistDot) ON_BN_CLICKED(IDC_BUTTON_MODEL_ROI, &CCornerDistSetDlg::OnBnClickedButtonModelRoi) ON_BN_CLICKED(IDC_BUTTON_MEASURE_ROI, &CCornerDistSetDlg::OnBnClickedButtonMeasureRoi) ON_BN_CLICKED(IDC_BUTTON_DIST_TEST_ALL, &CCornerDistSetDlg::OnBnClickedButtonDistTestAll) ON_BN_CLICKED(IDC_BUTTON_LOCK_MARK_DIST, &CCornerDistSetDlg::OnBnClickedButtonLockMarkDist) ON_BN_CLICKED(IDC_BUTTON_COPY_TOP_MARK_DIST, &CCornerDistSetDlg::OnBnClickedButtonCopyTopMarkDist) ON_NOTIFY(NM_RCLICK, IDC_LIST_DIST_DOT, &CCornerDistSetDlg::OnNMRClickListDistDot) ON_COMMAND(ID_VISION_DELETE, &CCornerDistSetDlg::OnVisionDelete) ON_COMMAND(ID_ADD_DIST, &CCornerDistSetDlg::OnAddDist) ON_COMMAND(ID_Menu_Measure_Set, &CCornerDistSetDlg::OnMenuMeasureSet) ON_COMMAND(ID_EDITROI_DRAWKEYROI, &CCornerDistSetDlg::OnEditroiDrawkeyroi) ON_COMMAND(ID_EDITROI_DRAWMEASUREROI, &CCornerDistSetDlg::OnEditroiDrawmeasureroi) ON_COMMAND(ID_EDITROI_DELETEALLROI, &CCornerDistSetDlg::OnEditroiDeleteallroi) END_MESSAGE_MAP() // CDistCornerSetDlg ÏûÏ¢´¦Àí³ÌÐò BOOL CCornerDistSetDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // TODO: ÔÚ´ËÌí¼Ó¶îÍâµÄ³õʼ»¯ //1. ´°ÌåUI InitWindUi(); ChangeVisionType(DIMENSION_NONE); m_eDotIndex = -1; ChangeCornerDotIdx(-1); //3. ÏÔʾËùÓеIJÎÊý dispListParam(); LockImage(-1); m_isLockPoint = TRUE; LockMark(m_isLockPoint); InitMenu(); return TRUE; // return TRUE unless you set the focus to a control // Òì³£: OCX ÊôÐÔÒ³Ó¦·µ»Ø FALSE } void CCornerDistSetDlg::InitWindUi(void) { /* code */ InitPointUi(); m_combFrirtRefer.InsertString(0, _T("First Type")); m_combFrirtRefer.InsertString(1, _T("Second Type")); m_combFrirtRefer.InsertString(2, _T("Thrid Type")); m_combFrirtRefer.InsertString(3, _T("Fourth Type")); m_combFrirtRefer.SetCurSel(0); m_combDistMode.InsertString(0, _T("false")); m_combDistMode.InsertString(1, _T("Grind Size")); m_combDistMode.InsertString(2, _T("Top Point")); m_combDistMode.InsertString(3, _T("Bot Point")); m_combDistMode.InsertString(4, _T("Key Dist")); m_combDistMode.InsertString(5, _T("Cut Dist")); m_combDistMode.SetCurSel(0); m_combDistMode2.InsertString(0, _T("false")); m_combDistMode2.InsertString(1, _T("Grind Size")); m_combDistMode2.InsertString(2, _T("Top Point")); m_combDistMode2.InsertString(3, _T("Bot Point")); m_combDistMode2.InsertString(4, _T("Key Dist")); m_combDistMode2.InsertString(5, _T("Cut Dist")); m_combDistMode2.SetCurSel(0); const CString ng_array_type[] = { _T("Chip"), _T("Broken"), _T("Grind"), _T("Dist Cut"), _T("Corner Dist"), _T("Unkown NG") }; int ngNum = 6; for (int i = 0; i < ngNum; i++) { m_combNgType.InsertString(i, ng_array_type[i]); m_combNgType2.InsertString(i, ng_array_type[i]); } m_combNgType.SetCurSel(2); m_combNgType2.SetCurSel(3); CString strCaption = _T(""); GetDlgItem(IDC_STATIC_DIST_RESULT_DIST)->SetWindowText(strCaption); GetDlgItem(IDC_STATIC_DIST_RESULT_DIST2)->SetWindowText(strCaption); } void CCornerDistSetDlg::InitPointUi(void) { /* code */ CRect rect; m_listCornerPoint.GetClientRect(&rect); // ΪÁбíÊÓͼ¿Ø¼þÌí¼ÓÈ«ÐÐÑ¡ÖкÍÕ¤¸ñ·ç¸ñ m_listCornerPoint.SetExtendedStyle(m_listCornerPoint.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_DOUBLEBUFFER); // ΪÁбíÊÓͼ¿Ø¼þÌí¼ÓÈýÁÐ int nCount = 13; m_listCornerPoint.InsertColumn(0, _T("ID"), LVCFMT_CENTER, rect.Width() / nCount, 0); m_listCornerPoint.InsertColumn(1, _T("Name"), LVCFMT_CENTER, rect.Width() / nCount, 1); m_listCornerPoint.InsertColumn(2, _T("Refer Index"), LVCFMT_CENTER, rect.Width() / nCount, 2); m_listCornerPoint.InsertColumn(3, _T("X"), LVCFMT_CENTER, rect.Width() / nCount, 3); m_listCornerPoint.InsertColumn(4, _T("Y"), LVCFMT_CENTER, rect.Width() / nCount, 4); m_listCornerPoint.InsertColumn(5, _T("Pos+"), LVCFMT_CENTER, rect.Width() / nCount, 5); m_listCornerPoint.InsertColumn(6, _T("Pos-"), LVCFMT_CENTER, rect.Width() / nCount, 6); m_listCornerPoint.InsertColumn(7, _T("First Judge"), LVCFMT_CENTER, rect.Width() / nCount, 7); m_listCornerPoint.InsertColumn(8, _T("Min1"), LVCFMT_CENTER, rect.Width() / nCount, 8); m_listCornerPoint.InsertColumn(9, _T("Max1"), LVCFMT_CENTER, rect.Width() / nCount, 9); m_listCornerPoint.InsertColumn(10, _T("Second Judge"), LVCFMT_CENTER, rect.Width() / nCount, 10); m_listCornerPoint.InsertColumn(11, _T("Min2"), LVCFMT_CENTER, rect.Width() / nCount, 11); m_listCornerPoint.InsertColumn(12, _T("Max2"), LVCFMT_CENTER, rect.Width() / nCount, 12); } void CCornerDistSetDlg::OnClose() { // TODO: ÔÚ´ËÌí¼ÓÏûÏ¢´¦Àí³ÌÐò´úÂëºÍ/»òµ÷ÓÃĬÈÏÖµ CDialogEx::OnClose(); } BOOL CCornerDistSetDlg::PreTranslateMessage(MSG* pMsg) { // TODO: ÔÚ´ËÌí¼ÓרÓôúÂëºÍ/»òµ÷ÓûùÀà if (pMsg->message == WM_KEYDOWN) { if ((pMsg->wParam == VK_RETURN) || (pMsg->wParam == VK_ESCAPE)) { return TRUE; } } return CDialogEx::PreTranslateMessage(pMsg); } void CCornerDistSetDlg::ChangeVisionType(DimensionDir eDir) { /* code */ SaveDistCorner(); //2. ÏÔʾµ±Ç°µÄÊý¾Ý m_eDir = eDir; m_dot = CVisionRecipe::getInstance()->getCornerDistProcess(eDir); ShowDistCornerParam(); ChangeCornerDotIdx(-1); int curIndex = m_eDotIndex; ChangeCornerDotIdx(curIndex); LockMark(TRUE); } void CCornerDistSetDlg::ShowDistCornerParam(void) { /* code */ if (DIMENSION_NONE == m_eDir) return; if (NULL == m_dot) return; m_topMark = m_dot->getPoint(0); m_botMark = m_dot->getPoint(1); m_topPoint = m_dot->getPoint(2); m_botPoint = m_dot->getPoint(3); UpdateData(FALSE); } void CCornerDistSetDlg::SaveDistCorner(void) { /* code */ if (DIMENSION_NONE == m_eDir) return; if (NULL == m_dot) return; UpdateData(TRUE); } void CCornerDistSetDlg::ChangeCornerDotIdx(int eIdx) { /* code */ SaveDistDotProcess(); if (eIdx == m_eDotIndex) { return; } m_eDotIndex = eIdx; m_dotDist = m_dot->getDot(eIdx); ShowDistDotParam(); LockImage(-1); } void CCornerDistSetDlg::ShowDistDotParam(void) { /* code */ if (-1 == m_eDotIndex) return; if (NULL == m_dotDist) return; m_combFrirtRefer.SetCurSel(m_dotDist->m_idxRefer); m_strName = m_dotDist->m_strName; m_pos = m_dotDist->getPose(); m_id = m_dotDist->getID(); m_refer = m_dotDist->m_nRef; m_refer_ = m_dotDist->m_nRef_; m_combDistMode.SetCurSel(m_dotDist->m_distMode); m_minValue = m_dotDist->m_minValue; m_maxValue = m_dotDist->m_maxValue; m_combNgType.SetCurSel(m_dotDist->m_ngType - 1); m_incValue = m_dotDist->m_incValue; m_combDistMode2.SetCurSel(m_dotDist->m_distMode2); m_minValue2 = m_dotDist->m_minValue2; m_maxValue2 = m_dotDist->m_maxValue2; m_combNgType2.SetCurSel(m_dotDist->m_ngType2 - 1); m_incValue2 = m_dotDist->m_incValue2; //±£´æ²ÎÊý dispRegion(); UpdateData(FALSE); } void CCornerDistSetDlg::dispRegion(void) { /* code */ } void CCornerDistSetDlg::SaveDistDotProcess(void) { /* code */ if (NULL == m_dotDist) return; UpdateData(TRUE); SaveDistCorner(); m_dotDist->m_idxRefer = m_combFrirtRefer.GetCurSel(); m_dotDist->m_strName = m_strName; m_dotDist->m_nRef = m_refer; m_dotDist->m_nRef_ = m_refer_; m_dotDist->m_distMode = m_combDistMode.GetCurSel(); m_dotDist->m_minValue = m_minValue; m_dotDist->m_maxValue = m_maxValue; m_dotDist->m_ngType = m_combNgType.GetCurSel() + 1; m_dotDist->m_incValue = m_incValue; m_dotDist->m_distMode2 = m_combDistMode2.GetCurSel(); m_dotDist->m_minValue2 = m_minValue2; m_dotDist->m_maxValue2 = m_maxValue2; m_dotDist->m_ngType2 = m_combNgType2.GetCurSel() + 1; m_dotDist->m_incValue2 = m_incValue2; int nCount = m_listCornerPoint.GetItemCount(); int id = m_dotDist->getID(); std::vector vDots = m_dot->getDots(); int nNum = (int)(vDots.size()); if (nCount != nNum) return; Point2I pose; for (int index = 0; index < nCount; index++){ CDistDotProcess *pSelectDot = vDots.at(index); if (NULL == pSelectDot) continue; if (pSelectDot->getID() != id) continue; CDistDotProcess *dot = m_dotDist; if (NULL == dot) return; CString strText; int i = index; //0. IDÖµ strText.Format(_T("%d"), dot->getID()); m_listCornerPoint.SetItemText(i, 0, strText); //1. Ãû³Æ strText = dot->m_strName; m_listCornerPoint.SetItemText(i, 1, strText); //2. Refer Type strText = _T("First Type"); if (1 == dot->m_idxRefer) { strText = _T("Second Type"); } else if (2 == dot->m_idxRefer) { strText = _T("Third Type"); } else if (3 == dot->m_idxRefer) { strText = _T("Fourth Type"); } m_listCornerPoint.SetItemText(i, 2, strText); //3. X pose = dot->getPose(); strText.Format(_T("%d"), pose.x); m_listCornerPoint.SetItemText(i, 3, strText); //4. Y strText.Format(_T("%d"), pose.y); m_listCornerPoint.SetItemText(i, 4, strText); //5.ref strText.Format(_T("%d"), dot->m_nRef); m_listCornerPoint.SetItemText(i, 5, strText); //6. ref_ strText.Format(_T("%d"), dot->m_nRef_); m_listCornerPoint.SetItemText(i, 6, strText); //7. Dist Mode strText = _T("false"); if (1 == dot->m_distMode) { strText = _T("Grind Size"); } else if (2 == dot->m_distMode) { strText = _T("Top Point"); } else if (3 == dot->m_distMode) { strText = _T("Bot Point"); } else if (4 == dot->m_distMode) { strText = _T("Key Dist"); } else if (5 == dot->m_distMode) { strText = _T("Cut Dist"); } m_listCornerPoint.SetItemText(i, 7, strText); //8. ÁÚ½ü¾àÀë×îСֵ strText.Format(_T("%d"), dot->m_minValue); m_listCornerPoint.SetItemText(i, 8, strText); //9. ÁÚ½ü¾àÀë×î´óÖµ strText.Format(_T("%d"), dot->m_maxValue); m_listCornerPoint.SetItemText(i, 9, strText); //10. Dist Mode strText = _T("false"); if (1 == dot->m_distMode2) { strText = _T("Grind Size"); } else if (2 == dot->m_distMode2) { strText = _T("Top Point"); } else if (3 == dot->m_distMode2) { strText = _T("Bot Point"); } else if (4 == dot->m_distMode2) { strText = _T("Key Dist"); } else if (5 == dot->m_distMode2) { strText = _T("Cut Dist"); } m_listCornerPoint.SetItemText(i, 10, strText); //11. ÁÚ½ü¾àÀë×îСֵ strText.Format(_T("%d"), dot->m_minValue2); m_listCornerPoint.SetItemText(i, 11, strText); //12. ÁÚ½ü¾àÀë×î´óÖµ strText.Format(_T("%d"), dot->m_maxValue2); m_listCornerPoint.SetItemText(i, 12, strText); break; } } int CCornerDistSetDlg::setDimensionDir(DimensionDir eDir) { /* code */ ChangeVisionType(eDir); dispListParam(); return 0; } void CCornerDistSetDlg::dispListParam(void) { /* code */ m_listCornerPoint.DeleteAllItems(); if (NULL == m_dot) return; //1. »ñÈ¡Êý¾Ý std::vector &vDots = m_dot->getDots(); int nCount = (int)(vDots.size()); if (nCount < 1) return; CString strText; Point2I pose; for (int i = 0; i < nCount; i++) { CDistDotProcess *dot = vDots.at(i); if (NULL == dot) continue; //0. IDÖµ strText.Format(_T("%d"), dot->getID()); m_listCornerPoint.InsertItem(i, strText); //1. Ãû³Æ strText = dot->m_strName; m_listCornerPoint.SetItemText(i, 1, strText); //2. Refer Type strText = _T("First Type"); if (1 == dot->m_idxRefer) { strText = _T("Second Type"); } else if (2 == dot->m_idxRefer) { strText = _T("Third Type"); } else if (3 == dot->m_idxRefer) { strText = _T("Fourth Type"); } m_listCornerPoint.SetItemText(i, 2, strText); //3. X pose = dot->getPose(); strText.Format(_T("%d"), pose.x); m_listCornerPoint.SetItemText(i, 3, strText); //4. Y strText.Format(_T("%d"), pose.y); m_listCornerPoint.SetItemText(i, 4, strText); //5.ref strText.Format(_T("%d"), dot->m_nRef); m_listCornerPoint.SetItemText(i, 5, strText); //6. ref_ strText.Format(_T("%d"), dot->m_nRef_); m_listCornerPoint.SetItemText(i, 6, strText); //7. Dist Mode strText = _T("false"); if (1 == dot->m_distMode) { strText = _T("Grind Size"); } else if (2 == dot->m_distMode) { strText = _T("Top Point"); } else if (3 == dot->m_distMode) { strText = _T("Bot Point"); } else if (4 == dot->m_distMode) { strText = _T("Key Dist"); } else if (5 == dot->m_distMode) { strText = _T("Cut Dist"); } m_listCornerPoint.SetItemText(i, 7, strText); //8. ÁÚ½ü¾àÀë×îСֵ strText.Format(_T("%d"), dot->m_minValue); m_listCornerPoint.SetItemText(i, 8, strText); //9. ÁÚ½ü¾àÀë×î´óÖµ strText.Format(_T("%d"), dot->m_maxValue); m_listCornerPoint.SetItemText(i, 9, strText); //10. Dist Mode strText = _T("false"); if (1 == dot->m_distMode2) { strText = _T("Grind Size"); } else if (2 == dot->m_distMode2) { strText = _T("Top Point"); } else if (3 == dot->m_distMode2) { strText = _T("Bot Point"); } else if (4 == dot->m_distMode2) { strText = _T("Key Dist"); } else if (5 == dot->m_distMode2) { strText = _T("Cut Dist"); } m_listCornerPoint.SetItemText(i, 10, strText); //11. ÁÚ½ü¾àÀë×îСֵ strText.Format(_T("%d"), dot->m_minValue2); m_listCornerPoint.SetItemText(i, 11, strText); //12. ÁÚ½ü¾àÀë×î´óÖµ strText.Format(_T("%d"), dot->m_maxValue2); m_listCornerPoint.SetItemText(i, 12, strText); } } void CCornerDistSetDlg::OnNMClickListDistDot(NMHDR *pNMHDR, LRESULT *pResult) { LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR); // TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë NM_LISTVIEW *plisCtrl = (NM_LISTVIEW *)pNMHDR; CString strID = m_listCornerPoint.GetItemText(plisCtrl->iItem, 0); int id = atoi(CW2A(strID.GetString())); int eIdx = id; ChangeCornerDotIdx(eIdx); *pResult = 0; } void CCornerDistSetDlg::OnBnClickedButtonModelRoi() { // TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë } void CCornerDistSetDlg::OnBnClickedButtonMeasureRoi() { // TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë } void CCornerDistSetDlg::LockImage(int nType) { /* code */ if (1 == nType) { GetDlgItem(IDC_BUTTON_MODEL_ROI)->EnableWindow(TRUE); GetDlgItem(IDC_BUTTON_MEASURE_ROI)->EnableWindow(FALSE); } else if (2 == nType) { GetDlgItem(IDC_BUTTON_MODEL_ROI)->EnableWindow(FALSE); GetDlgItem(IDC_BUTTON_MEASURE_ROI)->EnableWindow(TRUE); } else{ GetDlgItem(IDC_BUTTON_MODEL_ROI)->EnableWindow(FALSE); GetDlgItem(IDC_BUTTON_MEASURE_ROI)->EnableWindow(FALSE); } } void CCornerDistSetDlg::LockMark(BOOL isLock) { /* code */ m_isLockPoint = isLock; if (isLock) { GetDlgItem(IDC_BUTTON_COPY_TOP_MARK_DIST)->EnableWindow(FALSE); GetDlgItem(IDC_BUTTON_LOCK_MARK_DIST)->SetWindowTextW(L"Unlock"); } else { GetDlgItem(IDC_BUTTON_COPY_TOP_MARK_DIST)->EnableWindow(TRUE); GetDlgItem(IDC_BUTTON_LOCK_MARK_DIST)->SetWindowTextW(L"Lock"); } } void CCornerDistSetDlg::InitMenu(void) { /* code */ m_visionMenu.LoadMenu(IDR_MENU1); } void CCornerDistSetDlg::OnBnClickedButtonDistTestAll() { // TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë SaveDistCorner(); SaveDistDotProcess(); if (nullptr == m_dot) return; CString strCaption = _T(""); GetDlgItem(IDC_STATIC_DIST_RESULT_DIST)->SetWindowText(strCaption); GetDlgItem(IDC_STATIC_DIST_RESULT_DIST2)->SetWindowText(strCaption); m_dot->execute(m_eDir); dispAllPointResult(); } void CCornerDistSetDlg::dispAllPointResult(void) { /* code */ } void CCornerDistSetDlg::OnBnClickedButtonLockMarkDist() { // TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë if (m_isLockPoint) { m_isLockPoint = FALSE; } else { m_isLockPoint = TRUE; } LockMark(m_isLockPoint); } void CCornerDistSetDlg::OnBnClickedButtonCopyTopMarkDist() { // TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë CBlSideData *pSideData = CVisionRecipe::getInstance()->getSideData(m_eDir); if (NULL == pSideData) return; if (pSideData->m_bTopMark_Find) { m_topMark.x = pSideData->m_mTopMark.x; m_topMark.y = pSideData->m_mTopMark.y; if (nullptr != m_dot) { m_dot->setPoint(m_topMark, 0); } } if (pSideData->m_bBotMark_Find) { m_botMark.x = pSideData->m_mBotMark.x; m_botMark.y = pSideData->m_mBotMark.y; if (nullptr != m_dot) { m_dot->setPoint(m_botMark, 1); } } if (pSideData->m_bTopPoint_Find) { m_topPoint = pSideData->m_mTopPoint; if (nullptr != m_dot) { m_dot->setPoint(m_topPoint, 2); } } if (pSideData->m_bBotPoint_Find) { m_botPoint = pSideData->m_mBotPoint; if (nullptr != m_dot) { m_dot->setPoint(m_botPoint, 3); } } UpdateData(FALSE); } void CCornerDistSetDlg::OnNMRClickListDistDot(NMHDR *pNMHDR, LRESULT *pResult) { LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR); // TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë POINT pos; // pos1; GetCursorPos(&pos); CMenu *pDotMenu = m_visionMenu.GetSubMenu(0); pDotMenu->TrackPopupMenu(TPM_LEFTALIGN, pos.x, pos.y, this); *pResult = 0; } void CCornerDistSetDlg::OnVisionDelete() { // TODO: ÔÚ´ËÌí¼ÓÃüÁî´¦Àí³ÌÐò´úÂë if (NULL == m_dot) return; if (NULL == m_dotDist) return; int idDel = m_dotDist->getID(); int id = m_dot->delDot(idDel); dispListParam(); //if (id < 0) { // m_dotDist = NULL; // return; //} //m_eCornerIndex = id; //m_dotDist = m_dot->getDot((int)id); //ShowDistDotParam(); //LockImage(TRUE); //LocTop(TRUE); //LockBot(TRUE); } void CCornerDistSetDlg::OnAddDist() { // TODO: ÔÚ´ËÌí¼ÓÃüÁî´¦Àí³ÌÐò´úÂë if (NULL == m_dot) return; SaveDistCorner(); SaveDistDotProcess(); int id = m_dot->addDot(); dispListParam(); m_dotDist = m_dot->getDot(id); m_eDotIndex = id; ShowDistDotParam(); LockImage(-1); } void CCornerDistSetDlg::OnMenuMeasureSet() { // TODO: ÔÚ´ËÌí¼ÓÃüÁî´¦Àí³ÌÐò´úÂë if (NULL == m_dot) return; CMeasureSetDlg dlg; dlg.SetDot(m_dot); dlg.DoModal(); } void CCornerDistSetDlg::OnEditroiDrawkeyroi() { // TODO: ÔÚ´ËÌí¼ÓÃüÁî´¦Àí³ÌÐò´úÂë CVisionSetDlg *pMainDlg = (CVisionSetDlg *)(CVisionRecipe::getInstance()->GetMainDlg()); if (NULL == pMainDlg) return; LockImage(1); } void CCornerDistSetDlg::OnEditroiDrawmeasureroi() { // TODO: ÔÚ´ËÌí¼ÓÃüÁî´¦Àí³ÌÐò´úÂë CVisionSetDlg *pMainDlg = (CVisionSetDlg *)(CVisionRecipe::getInstance()->GetMainDlg()); if (NULL == pMainDlg) return; LockImage(2); } void CCornerDistSetDlg::OnEditroiDeleteallroi() { // TODO: ÔÚ´ËÌí¼ÓÃüÁî´¦Àí³ÌÐò´úÂë if (nullptr == m_dotDist) return; HalconCpp::HObject hRegion; HalconCpp::GenEmptyObj(&hRegion); m_dotDist->setRoiRegion(hRegion); m_dotDist->setLineRegion(hRegion); dispRegion(); dispListParam(); ShowDistDotParam(); }