/************************************************************************************************** 版本所有(C), 2020-2022, 北京普达迪泰 *************************************************************************************************** 文 件 名: EnvelopeDlg.cpp 功能描述: 静态测量-包络比对 版 本 号: 1.00初版 作 者: HYF 生成日期; 2021-12-20 最近修改: 函数列表: 修改历史: 1.日 期 :2021-12-20 作 者 : HYF 修改内容 : 创建文件 **************************************************************************************************/ #include "pch.h" #include "Dms.h" #include "EnvelopeDlg.h" #include "afxdialogex.h" #include "DmsDoc.h" #include "EquipDataPointManager.h" #include "CppSQLite3.h" // EnvelopeDlg 对话框 IMPLEMENT_DYNAMIC(EnvelopeDlg, CDialogEx) EnvelopeDlg::EnvelopeDlg(CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_DLG_ENVELOPE, pParent) { } EnvelopeDlg::EnvelopeDlg(CWnd* pParent, DWORD iTaskId) : CDialogEx(IDD_DLG_ENVELOPE, pParent) , m_taskId(iTaskId) { } EnvelopeDlg::~EnvelopeDlg() { } void EnvelopeDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_STATIC_ENVELOPE_MAX, m_Static_Envelop_Max); DDX_Control(pDX, IDC_STATIC_ENVELOPE_POINT, m_Static_Envelope_point); DDX_Control(pDX, IDC_PIC, m_ImageStatic); DDX_Control(pDX, IDC_STATIC_MAX_RADIUS, m_Label_Max_Radius); DDX_Control(pDX, IDC_STATIC_MAX_POINT, m_Label_Max_Point); DDX_Control(pDX, IDC_STATIC_ENVELOPE_XYZ, m_Label_Point_XYZ); } // 获取文档对象 CDmsDoc *EnvelopeDlg::GetDocument() { CFrameWnd *pFrm = (CFrameWnd *)(AfxGetApp()->m_pMainWnd); ASSERT(pFrm); CView *pView = pFrm->GetActiveView(); CDmsDoc *pDoc = (CDmsDoc *)(pView->GetDocument()); ASSERT(pDoc->IsKindOf(RUNTIME_CLASS(CDmsDoc))); return pDoc; } BEGIN_MESSAGE_MAP(EnvelopeDlg, CDialogEx) ON_BN_CLICKED(IDOK, &EnvelopeDlg::OnBnClickedOk) END_MESSAGE_MAP() // EnvelopeDlg 消息处理程序 BOOL EnvelopeDlg::OnInitDialog() { CDialogEx::OnInitDialog(); //创建图标 HICON icon; //加载图标 icon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); SetIcon(icon, true); SetIcon(icon, false); CDialogEx::SetBackgroundColor(RGB(0xff, 0xff, 0xff)); // POINT数据访问入口 EquipDataPointManager *pPointManager = GetDocument()->GetEquipDataPointManager(); ASSERT(pPointManager != NULL); DOUBLE dValue = 0.0; DOUBLE tValue = 0.0; DOUBLE x = 0, y = 0; CString szPointTitle; CString szPointInfo; CString szMaxRadius; CppSQLite3Query q = pPointManager->Query(m_taskId); while (!q.eof()) { x = q.getFloatField("point_a_x"); y = q.getFloatField("point_a_y"); tValue = CS::EnvelopeValue(x, y); if (dValue < tValue) { dValue = tValue; szPointTitle.Format("%s" ,q.getStringField("point_title")); DOUBLE z = q.getFloatField("point_a_z"); szPointInfo.Format("( %.3f, %.3f, %.3f)", x, y, z); } q.nextRow(); } q.finalize(); //显示包络示意图 m_ImageStatic.SetImage(_T("envelope.png")); m_Label_Max_Radius.SetWindowText(_T("最大包络半径")); szMaxRadius.Format("%.3f", dValue); m_Static_Envelop_Max.SetFontBold(FALSE); m_Static_Envelop_Max.SetFontSize(12); m_Static_Envelop_Max.SetWindowText(szMaxRadius); m_Label_Max_Point.SetWindowText(_T("最大外包络点")); m_Static_Envelope_point.SetFontBold(FALSE); m_Static_Envelope_point.SetFontSize(12); m_Static_Envelope_point.SetWindowText(szPointTitle); m_Label_Point_XYZ.SetWindowTextA(szPointInfo); return TRUE; } /************************************************************************************************** 函 数 名 :OnBnClickedOk 功能描述 :消息处理-确认关闭 输入参数 :略 输出参数 :略 返 回 值 :略 **************************************************************************************************/ void EnvelopeDlg::OnBnClickedOk() { CDialogEx::OnOK(); }