// DlgCoordinateConvert.cpp: 实现文件 // #include "stdafx.h" #include "ENRIT.h" #include "afxdialogex.h" #include "DlgCoordinateConvert.h" // CDlgCoordinateConvert 对话框 const int CAM_COLUMN_COUNT = 5; const TCHAR* CAM_COLUMN_NAMES[CAM_COLUMN_COUNT] = { _T("Dimension"), _T("0 Hand Resolution(H)"), _T("0 Hand Resolution(V)"), _T("1 Hand Resolution(H)"), _T("1 Hand Resolution(V)") }; const int CAM_COLUMN_WIDTHS[CAM_COLUMN_COUNT] = { 80, 120, 120, 120, 120 }; #define GRID_FIX_COLOR RGB(144,200,246) #define GRID_COLOR RGB(242,242,242) #define GRID_TEXT_COLOR RGB(255,255,255) #define GRID_LINE_COLOR GRID_FIX_COLOR IMPLEMENT_DYNAMIC(CDlgCoordinateConvert, CDialogEx) CDlgCoordinateConvert::CDlgCoordinateConvert(CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_DLG_COORD_CONVERT, pParent) , m_nCameraCount(0) , m_nScanCount(0) , m_pDlgRecipe(nullptr) { } CDlgCoordinateConvert::~CDlgCoordinateConvert() { } void CDlgCoordinateConvert::SetRecipe(CGlassRecipe* pRecipe) { m_pDlgRecipe = pRecipe; } void CDlgCoordinateConvert::InitCameraGrid() { if (m_gridCameraList.GetSafeHwnd() == NULL) { return; } m_gridCameraList.GetDefaultCell(TRUE, FALSE)->SetBackClr(GRID_FIX_COLOR); m_gridCameraList.GetDefaultCell(FALSE, TRUE)->SetBackClr(GRID_FIX_COLOR); m_gridCameraList.GetDefaultCell(FALSE, FALSE)->SetBackClr(GRID_COLOR); m_gridCameraList.SetFixedBkColor(GRID_FIX_COLOR); m_gridCameraList.SetGridLines(GVL_BOTH); m_gridCameraList.SetColumnCount(CAM_COLUMN_COUNT); m_gridCameraList.SetRowCount(10); m_gridCameraList.SetFixedRowCount(1); m_gridCameraList.SetFixedColumnCount(0); m_gridCameraList.ExpandColumnsToFit(); CFont* pFont = m_gridCameraList.GetFont(); if (!pFont) { return; } LOGFONT lf; pFont->GetLogFont(&lf); lf.lfItalic = 0; lf.lfHeight = 14; lf.lfWeight = FW_BOLD; _tcscpy_s(lf.lfFaceName, LF_FACESIZE, _T("Arial")); m_gridCameraList.GetDefaultCell(TRUE, FALSE)->SetFont(&lf); m_gridCameraList.GetDefaultCell(FALSE, TRUE)->SetFont(&lf); m_gridCameraList.GetDefaultCell(TRUE, TRUE)->SetFont(&lf); m_gridCameraList.SetEditable(TRUE); m_gridCameraList.EnableSelection(TRUE); InitCameraGridHeader(); } void CDlgCoordinateConvert::InitCameraGridHeader() { CString str; GV_ITEM Item; int nCol = 0; int iLoop; Item.mask = GVIF_TEXT; Item.row = 0; for (iLoop = 0; iLoop < CAM_COLUMN_COUNT; iLoop++) { Item.col = nCol++; Item.strText = CAM_COLUMN_NAMES[iLoop]; m_gridCameraList.SetItem(&Item); m_gridCameraList.SetColumnWidth(Item.col, CAM_COLUMN_WIDTHS[iLoop]); } m_gridCameraList.Invalidate(); } void CDlgCoordinateConvert::FillCameraGrid() { m_gridCameraList.SetRowCount(MAX_DIMENSION_COUNT + 1); CProfileInspect_Prm profile; if (m_pDlgRecipe != nullptr) { profile = m_pDlgRecipe->m_ProfilePrm; } else { for (int i = 0; i < MAX_DIMENSION_COUNT; i++) { profile.m_dConvResolution[i][0] = 0.01; profile.m_dConvResolution[i][1] = 0.01; profile.m_dScanResolution[i][0] = 0.01; profile.m_dScanResolution[i][1] = 0.01; } } CString str; const TCHAR* SET_INS_DIMENSION[] = { _T("A Top"),_T("B Top"),_T("C Top"),_T("D Top"),_T("A Bot"),_T("B Bot"),_T("C Bot"),_T("D Bot") }; for (int i = 0; i < MAX_DIMENSION_COUNT; ++i) { int iRow = i + 1; m_gridCameraList.SetItemText(iRow, 0, SET_INS_DIMENSION[i]); m_gridCameraList.SetItemState(iRow, 0, GVIS_READONLY); str.Format(_T("%.10f"), profile.m_dConvResolution[i][0]); m_gridCameraList.SetItemText(iRow, 1, str); str.Format(_T("%.10f"), profile.m_dScanResolution[i][0]); m_gridCameraList.SetItemText(iRow, 2, str); str.Format(_T("%.10f"), profile.m_dConvResolution[i][1]); m_gridCameraList.SetItemText(iRow, 3, str); str.Format(_T("%.10f"), profile.m_dScanResolution[i][1]); m_gridCameraList.SetItemText(iRow, 4, str); } m_gridCameraList.Invalidate(); } void CDlgCoordinateConvert::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_CAMERA_LIST, m_gridCameraList); DDX_Text(pDX, IDC_EDIT_CAMERA_COUNT, m_nCameraCount); DDX_Text(pDX, IDC_EDIT_SCAN_COUNT, m_nScanCount); } BEGIN_MESSAGE_MAP(CDlgCoordinateConvert, CDialogEx) END_MESSAGE_MAP() BEGIN_EVENTSINK_MAP(CDlgCoordinateConvert, CDialogEx) ON_EVENT(CDlgCoordinateConvert, IDC_BTN_CONVERT_APPLY, DISPID_CLICK, CDlgCoordinateConvert::OnClickBtnConvertApply, VTS_NONE) ON_EVENT(CDlgCoordinateConvert, IDC_BTN_CONVERT_CLOSE, DISPID_CLICK, CDlgCoordinateConvert::OnClickBtnConvertClose, VTS_NONE) END_EVENTSINK_MAP() // CDlgCoordinateConvert 消息处理程序 BOOL CDlgCoordinateConvert::OnInitDialog() { CDialogEx::OnInitDialog(); // TODO: 在此添加额外的初始化 m_nCameraCount = g_pBase->m_nCameraCount; m_nScanCount = g_pBase->m_nScanCount; InitCameraGrid(); FillCameraGrid(); UpdateData(FALSE); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } void CDlgCoordinateConvert::OnClickBtnConvertApply() { if (m_pDlgRecipe != nullptr) { for (int i = 0; i < MAX_DIMENSION_COUNT; ++i) { int iRow = i + 1; CString strVal; strVal = m_gridCameraList.GetItemText(iRow, 1); m_pDlgRecipe->m_ProfilePrm.m_dConvResolution[i][0] = _tstof(strVal); strVal = m_gridCameraList.GetItemText(iRow, 2); m_pDlgRecipe->m_ProfilePrm.m_dScanResolution[i][0] = _tstof(strVal); strVal = m_gridCameraList.GetItemText(iRow, 3); m_pDlgRecipe->m_ProfilePrm.m_dConvResolution[i][1] = _tstof(strVal); strVal = m_gridCameraList.GetItemText(iRow, 4); m_pDlgRecipe->m_ProfilePrm.m_dScanResolution[i][1] = _tstof(strVal); } } this->EndDialog(IDOK); } void CDlgCoordinateConvert::OnClickBtnConvertClose() { this->EndDialog(IDCANCEL); }