| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609 |
- /**************************************************************************************************
- 版本所有(C), 2020-2022, 北京普达迪泰
- ***************************************************************************************************
- 文 件 名: StartView.cpp:
- 功能描述: “开始”UI
- 版 本 号: 1.00初版
- 作 者: HYF
- 生成日期; 2021-12-20
- 最近修改:
- 函数列表:
- 修改历史:
- 1.日 期 :2021-12-20
- 作 者 : HYF
- 修改内容 : 创建文件
- **************************************************************************************************/
- #include "pch.h"
- #include "MainFrm.h"
- // SHARED_HANDLERS 可以在实现预览、缩略图和搜索筛选器句柄的
- // ATL 项目中进行定义,并允许与该项目共享文档代码。
- #ifndef SHARED_HANDLERS
- #include "Dms.h"
- #endif
- #include "resource.h"
- #include "DmsDoc.h"
- #include "StartView.h"
- #include "EquipTypeView.h"
- #include "EquipTypeManager.h"
- #include "ReportView.h"
- #include "TaskManager.h"
- #include "CppSQLite3.h"
- #include "StaticReport.h"
- #include "DynamicReport.h"
- #include "Task.h"
- #include "IPNDlg.h"
- #include "GuideDlg.h"
- #include "DictView.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #endif
- // 秒定时器:用于显示当前时间
- #define TIMER_NOW 100
- // CStartView
- IMPLEMENT_DYNCREATE(CStartView, CFormView)
- BEGIN_MESSAGE_MAP(CStartView, CFormView)
- ON_BN_CLICKED(IDC_BTN_START, &CStartView::OnBnClickedBtnStart)
- ON_WM_TIMER()
- ON_BN_CLICKED(IDC_RADIO_TASK_TYPE1, &CStartView::OnBnClickedRadioTaskType1)
- ON_BN_CLICKED(IDC_RADIO_TASK_TYPE2, &CStartView::OnBnClickedRadioTaskType2)
- ON_STN_CLICKED(IDC_STATIC_EQUIPMENT, &CStartView::OnStnClickedStaticEquipment)
- ON_STN_CLICKED(IDC_STATIC_REPORT, &CStartView::OnStnClickedStaticReport)
- ON_NOTIFY(NM_DBLCLK, IDC_CUSTOM_GRID_CTRL, OnDBRecentTaskClick)
- ON_WM_CREATE()
- ON_STN_CLICKED(IDC_STATIC_REL_GUIDE, &CStartView::OnStnClickedStaticRelGuide)
- ON_STN_CLICKED(IDC_STATIC_REL_FNL, &CStartView::OnStnClickedStaticRelFnl)
- ON_WM_CTLCOLOR()
- ON_STN_CLICKED(IDC_STATIC_CONFIG, &CStartView::OnStnClickedDictConfig)
- END_MESSAGE_MAP()
- // CStartView 构造/析构
- CStartView::CStartView()
- : CFormView(IDD_VIEW_START)
- ,m_iTaskType(0)
- , m_szEquipCode(_T(""))
- , m_szTaskDesc(_T(""))
- {
- m_BkBrush.CreateSolidBrush(RGB(247, 247, 247));
- }
- CStartView::~CStartView()
- {
- }
- void CStartView::DoDataExchange(CDataExchange* pDX)
- {
- CFormView::DoDataExchange(pDX);
- DDX_Control(pDX, IDC_STATIC_START_TITLE, m_Static_Title);
- DDX_Control(pDX, IDC_STATIC_TASK_TITLE, m_Static_TaskTitle);
- DDX_Control(pDX, IDC_COMBO_EQUIPMENT_TYPE, m_Combo_EquipmentType);
- DDX_Control(pDX, IDC_STATIC_EQUIPMENT, m_Static_EquipmentFunc);
- DDX_Control(pDX, IDC_STATIC_REPORT, m_Static_ReportFunc);
- DDX_Control(pDX, IDC_STATIC_DECLARATION, m_Static_Support);
- DDX_Radio(pDX, IDC_RADIO_TASK_TYPE1, m_iTaskType);
- DDX_Control(pDX, IDC_STATIC_RELATED, m_Static_Related);
- DDX_Text(pDX, IDC_EDT_EQUIP_CODE, m_szEquipCode);
- DDX_Text(pDX, IDC_EDIT_TASK_DESC, m_szTaskDesc);
- DDX_Control(pDX, IDC_CUSTOM_GRID_CTRL, m_GridCtrl);
- DDX_Control(pDX, IDC_STATIC_RECENT, m_Static_Recent);
- DDX_Control(pDX, IDC_STATIC_REL_GUIDE, m_Label_Rel_Guide);
- DDX_Control(pDX, IDC_STATIC_REL_FNL, m_Label_Rel_Fnl);
- DDX_Control(pDX, IDC_STATIC_CONFIG, m_Static_Ctrl_Dict);
- }
- BOOL CStartView::PreCreateWindow(CREATESTRUCT& cs)
- {
- // CREATESTRUCT cs 来修改窗口类或样式
- return CFormView::PreCreateWindow(cs);
- }
- /**************************************************************************************************
- 函 数 名 :OnCreate
- 功能描述 :消息处理-Create
- 输入参数 :无
- 输出参数 :无
- 返 回 值 :void
- **************************************************************************************************/
- int CStartView::OnCreate(LPCREATESTRUCT lpCreateStruct)
- {
- if (CFormView::OnCreate(lpCreateStruct) == -1)
- return -1;
- m_pDoc = (CDmsDoc *)GetDocument();
- ASSERT(m_pDoc != NULL);
- ASSERT(m_pDoc->IsKindOf(RUNTIME_CLASS(CDmsDoc)));
- return 0;
- }
- /**************************************************************************************************
- 函 数 名 :OnInitialUpdate
- 功能描述 :初始化UI显示
- 输入参数 :无
- 输出参数 :无
- 返 回 值 :void
- **************************************************************************************************/
- void CStartView::OnInitialUpdate()
- {
- CFormView::OnInitialUpdate();
- // 设置界面显示的文字样式
- m_Static_Title.SetFontSize(28);
- m_Static_Title.SetFontBold(TRUE);
- // 根据条件启动任务
- m_Static_TaskTitle.SetFontSize(18);
- m_Static_TaskTitle.SetFontBold(TRUE);
- // 技术支持
- m_Static_Support.SetTextColor(RGB(42, 130, 228));
- m_Static_Support.SetFontSize(14);
- // 相关功能
- m_Static_Related.SetFontSize(16);
- m_Static_Related.SetFontBold(TRUE);
- // 设备管理
- m_Static_EquipmentFunc.SetFontSize(13);
- m_Static_EquipmentFunc.SetLink(TRUE);
- m_Static_EquipmentFunc.SetTextColor(RGB(42, 130, 228));
- m_Static_EquipmentFunc.SetLinkCursor(AfxGetApp()->LoadCursor(IDC_HAND_CURSOR));
- // 测量报告
- m_Static_ReportFunc.SetFontSize(13);
- m_Static_ReportFunc.SetLink(TRUE);
- m_Static_ReportFunc.SetTextColor(RGB(42, 130, 228));
- m_Static_ReportFunc.SetLinkCursor(AfxGetApp()->LoadCursor(IDC_HAND_CURSOR));
- // 测量引导
- m_Label_Rel_Guide.SetFontSize(13);
- m_Label_Rel_Guide.SetLink(TRUE);
- m_Label_Rel_Guide.SetTextColor(RGB(42, 130, 228));
- m_Label_Rel_Guide.SetLinkCursor(AfxGetApp()->LoadCursor(IDC_HAND_CURSOR));
- // 网形优化
- m_Label_Rel_Fnl.SetFontSize(13);
- m_Label_Rel_Fnl.SetLink(TRUE);
- m_Label_Rel_Fnl.SetTextColor(RGB(42, 130, 228));
- m_Label_Rel_Fnl.SetLinkCursor(AfxGetApp()->LoadCursor(IDC_HAND_CURSOR));
- // 网形优化
- m_Static_Ctrl_Dict.SetFontSize(13);
- m_Static_Ctrl_Dict.SetLink(TRUE);
- m_Static_Ctrl_Dict.SetTextColor(RGB(42, 130, 228));
- m_Static_Ctrl_Dict.SetLinkCursor(AfxGetApp()->LoadCursor(IDC_HAND_CURSOR));
- // 启动定时器
- SetTimer(TIMER_NOW, 1000, NULL);
- // 最近任务
- m_Static_Recent.SetFontSize(16);
- m_Static_Recent.SetFontBold(TRUE);
- // 初始化UI数据;
- this->InitFormData();
- // 更新UI显示
- GetParentFrame()->RecalcLayout();
- ResizeParentToFit();
- // 更改GridCtrl风格
- ::SetWindowLong(m_GridCtrl.m_hWnd, GWL_STYLE, GetWindowLong(m_GridCtrl.m_hWnd, GWL_STYLE)&~WS_BORDER);
- // 初始化设备型号下拉选择
- InitEquipTypeList();
- }
- /**************************************************************************************************
- 函 数 名 :InitFormData
- 功能描述 :初始化UI数据
- 输入参数 :无
- 输出参数 :无
- 返 回 值 :void
- **************************************************************************************************/
- void CStartView::InitFormData()
- {
- // 初始化“最近任务”
- InitRecentTaskList();
- }
- /**************************************************************************************************
- 函 数 名 :ResetFormData
- 功能描述 :重置UI展示数据
- 输入参数 :无
- 输出参数 :无
- 返 回 值 :void
- **************************************************************************************************/
- void CStartView::ResetFormData()
- {
- }
- /**************************************************************************************************
- 函 数 名 :InitEquipTypeList
- 功能描述 :初始化设备型号下拉选择列表
- 输出参数 :无
- 返 回 值 :CppSQLite3Query
- **************************************************************************************************/
- void CStartView::InitEquipTypeList()
- {
- m_Combo_EquipmentType.ResetContent();
-
- EquipTypeManager *pManager = m_pDoc->GetEquipTypeManager();
- CppSQLite3Query q = pManager->Query();
- bool bFlag = q.eof();
- while (!q.eof()) {
- CString szEquipTypeCode = q.getStringField("equip_type_code");
- m_Combo_EquipmentType.AddString(szEquipTypeCode);
- q.nextRow();
- }
- q.finalize();
- if (!bFlag) m_Combo_EquipmentType.SetCurSel(0);
- }
- // CStartView 诊断
- #ifdef _DEBUG
- void CStartView::AssertValid() const
- {
- CFormView::AssertValid();
- }
- void CStartView::Dump(CDumpContext& dc) const
- {
- CFormView::Dump(dc);
- }
- #endif //_DEBUG
- /**************************************************************************************************
- 函 数 名 :OnUpdate
- 功能描述 :数据变更,更新UI
- 输入参数 :无
- 输出参数 :无
- 返 回 值 :void
- **************************************************************************************************/
- void CStartView::OnUpdate(CView* /*pSender*/, LPARAM /*lHint*/, CObject* /*pHint*/)
- {
- this->InitEquipTypeList();
- }
- /**************************************************************************************************
- 函 数 名 :OnTimer
- 功能描述 :定时器消息处理
- 输入参数 :无
- 输出参数 :无
- 返 回 值 :void
- **************************************************************************************************/
- void CStartView::OnTimer(UINT_PTR nIDEvent)
- {
- CTime tTime = CTime::GetCurrentTime();
- switch (nIDEvent) {
- case TIMER_NOW:
- m_szTimeNow = tTime.Format(_T("%Y-%m-%d %H:%M:%S"));
- break;
- }
- CFormView::OnTimer(nIDEvent);
- }
- // 事件处理:设置任务测量类型为:0 静态测量
- void CStartView::OnBnClickedRadioTaskType1()
- {
- m_iTaskType = 0;
- }
- // 事件处理: 设置任务测量类型为:1 动态测量
- void CStartView::OnBnClickedRadioTaskType2()
- {
- m_iTaskType = 1;
- }
- /**************************************************************************************************
- 函 数 名 :OnBnClickedBtnStart
- 功能描述 :事件处理-启动任务
- 输入参数 :无
- 输出参数 :无
- 返 回 值 :void
- **************************************************************************************************/
- void CStartView::OnBnClickedBtnStart()
- {
- this->UpdateData(TRUE);
- int idx = m_Combo_EquipmentType.GetCurSel();
- CString szEquipTypeCode;
- m_Combo_EquipmentType.GetLBText(idx, szEquipTypeCode);
- if (szEquipTypeCode.IsEmpty()) {
- MessageBox(_T("设备型号不能为空"));
- return;
- }
- if (m_szEquipCode.IsEmpty()) {
- MessageBox(_T("设备编号不能为空"));
- return;
- }
- TaskManager* taskManager = m_pDoc->GetTaskManager();
- // 采用64位时间戳作为任务ID
- CTime tm;
- tm = CTime::GetCurrentTime();//获取系统日期
- CString szTaskTime = tm.Format("%Y-%m-%d %H:%M:%S");
- CString szTaskTitle;
- if (m_iTaskType == 0)
- szTaskTitle.Format("%s-%s", m_szEquipCode, _T("零位测量"));
- else
- szTaskTitle.Format("%s-%s", m_szEquipCode, _T("位姿测量"));
- Task task;
- task.SetTaskTime(szTaskTime);
- task.SetEquipTypeCode(szEquipTypeCode);
- task.SetEquipCode(m_szEquipCode);
- task.SetTaskTitle(szTaskTitle);
- task.SetTaskDesc(m_szTaskDesc);
- task.SetTaskType(m_iTaskType);
- DWORD taskId = taskManager->Add(task);
- if (taskId <= 0) {
- MessageBox(_T("任务启动失败!"));
- return;
- }
- CMainFrame *pMain = (CMainFrame*)AfxGetApp()->m_pMainWnd;
- if (m_iTaskType == 0)
- ::PostMessage(pMain->m_hWnd, WM_START_STATIC, (WPARAM)taskId, NULL);
- else
- ::PostMessage(pMain->m_hWnd, WM_START_DYNAMIC, (WPARAM)taskId, NULL);
- }
- /**************************************************************************************************
- 函 数 名 :OnStnClickedStaticEquipment
- 功能描述 :事件处理-打开设备管理
- 输入参数 :无
- 输出参数 :无
- 返 回 值 :void
- **************************************************************************************************/
- void CStartView::OnStnClickedStaticEquipment()
- {
- EquipTypeView dlg;
- if (dlg.DoModal() == IDOK) {
- }
- }
- /**************************************************************************************************
- 函 数 名 :OnStnClickedStaticEquipment
- 功能描述 :事件处理--打开测量报告
- 输入参数 :无
- 输出参数 :无
- 返 回 值 :void
- **************************************************************************************************/
- void CStartView::OnStnClickedStaticReport()
- {
- ReportView dlg;
- if (dlg.DoModal() == IDOK) {
- }
- }
- /**************************************************************************************************
- 函 数 名 :InitRecentTaskList
- 功能描述 :最近任务
- 输入参数 :无
- 输出参数 :无
- 返 回 值 :void
- **************************************************************************************************/
- void CStartView::InitRecentTaskList()
- {
- m_GridCtrl.DeleteAllItems();
- m_GridCtrl.SetGridLines(GVL_NONE);
- m_GridCtrl.SetEditable(FALSE);
- m_GridCtrl.SetSingleRowSelection(TRUE);
- m_GridCtrl.SetFrameFocusCell(FALSE);
- m_GridCtrl.SetSingleColSelection(FALSE);
- m_GridCtrl.EnableHiddenColUnhide(TRUE);
- m_GridCtrl.GetDefaultCell(FALSE, FALSE)->SetBackClr(RGB(247, 247, 247));
- m_GridCtrl.SetBkColor(RGB(247, 247, 247));
- m_GridCtrl.SetAutoSizeStyle();
- TRY
- {
- m_GridCtrl.SetRowCount(20);
- m_GridCtrl.SetColumnCount(3);
- m_GridCtrl.SetFixedRowCount(0);
- m_GridCtrl.SetFixedColumnCount(0);
- m_GridCtrl.SetColumnWidth(0, 30);
- m_GridCtrl.SetColumnWidth(1, 160);
- m_GridCtrl.SetColumnWidth(2, 130);
-
- }
- CATCH(CMemoryException, e)
- {
- e->ReportError();
- return;
- }
- END_CATCH
- // Get the font
- CFont* pFont = m_GridCtrl.GetFont();
- LOGFONT lf;
- pFont->GetLogFont(&lf);
- // Make it true-type
- memcpy(lf.lfFaceName, _T("Arial"), 6);
- // Set the fixed row defaults as this new font
- m_GridCtrl.GetDefaultCell(TRUE, FALSE)->SetFont(&lf);
- CString str;
- /**
- GV_ITEM ItemTitle;
- ItemTitle.mask = GVIF_TEXT | GVIF_FORMAT;
- ItemTitle.nBorder = GVIS_BDR_BOTTOM;
- ItemTitle.nFormat = DT_SINGLELINE | DT_VCENTER;
- ItemTitle.row = 0;
- ItemTitle.col = 0;
- ItemTitle.nFormat |= DT_CENTER;
- ItemTitle.strText = _T("序号");
- m_GridCtrl.SetItem(&ItemTitle);
- ItemTitle.row = 0;
- ItemTitle.col = 1;
- ItemTitle.nFormat |= DT_CENTER;
- ItemTitle.strText = _T("测量任务");
- m_GridCtrl.SetItem(&ItemTitle);
- ItemTitle.row = 0;
- ItemTitle.col = 2;
- ItemTitle.nFormat |= DT_CENTER;
- ItemTitle.strText = _T("测量时间");
- m_GridCtrl.SetItem(&ItemTitle);
- **/
- // POINT数据访问入口
- TaskManager *pTaskManager = m_pDoc->GetTaskManager();
- ASSERT(pTaskManager != NULL);
- GV_ITEM Item;
- Item.mask = GVIF_TEXT | GVIF_FORMAT;
- Item.nFormat = DT_SINGLELINE | DT_VCENTER;
- int iRow = 0;
- int iIndex = 0;
- CppSQLite3Query q = pTaskManager->QueryByRecent();
- while (!q.eof()) {
- iIndex += 1;
- // 序号
- Item.row = iRow;
- Item.col = 0;
- Item.nFormat |= DT_CENTER;
- str.Format("%d", iIndex);
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- LPARAM taskId = (LPARAM)q.getIntField("task_id");
- m_GridCtrl.SetItemData(iRow, 0, (LPARAM)taskId);
- // 任务名称
- Item.row = iRow;
- Item.col = 1;
- Item.nFormat |= DT_CENTER;
- str.Format("%s", q.getStringField("task_title"));
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- DWORD taskType = q.getIntField("task_type");
- m_GridCtrl.SetItemData(iRow, 1, (LPARAM)taskType);
-
- // 执行时间
- Item.row = iRow;
- Item.col = 2;
- Item.nFormat |= DT_CENTER;
- str.Format("%s", q.getStringField("task_time"));
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- iRow++;
- q.nextRow();
- }
- q.finalize();
- m_GridCtrl.ShowScrollBar(SB_BOTH, FALSE);
- //m_GridCtrl.AutoFill();
- }
- /**************************************************************************************************
- 函 数 名 :OnStnClickedStaticRelGuide
- 功能描述 :测量引导
- 输入参数 :无
- 输出参数 :无
- 返 回 值 :void
- **************************************************************************************************/
- void CStartView::OnStnClickedStaticRelGuide()
- {
- GuideDlg dlg;
- dlg.DoModal();
- }
- /**************************************************************************************************
- 函 数 名 :OnStnClickedStaticRelFnl
- 功能描述 :网形优化
- 输入参数 :无
- 输出参数 :无
- 返 回 值 :void
- **************************************************************************************************/
- void CStartView::OnStnClickedStaticRelFnl()
- {
- IPNDlg dlg;
- dlg.DoModal();
- }
- /**************************************************************************************************
- 函 数 名 :OnDBRecentTaskClick
- 功能描述 :最近任务详情
- 输入参数 :无
- 输出参数 :无
- 返 回 值 :void
- **************************************************************************************************/
- void CStartView::OnDBRecentTaskClick(NMHDR *pNMHDR, LRESULT *pResult)
- {
- NM_GRIDVIEW *pItem = (NM_GRIDVIEW *)pNMHDR;
- CString s;
- int iRow = pItem->iRow;
- int iCol = pItem->iColumn;
- DWORD taskId = (DWORD)m_GridCtrl.GetItemData(iRow, 0);
- DWORD taskType = (DWORD)m_GridCtrl.GetItemData(iRow, 1);
- if (taskType == 0)
- {
- StaticReport dlg1(this, taskId);
- dlg1.DoModal();
- }
- else
- {
- DynamicReport dlg2(this, taskId);
- dlg2.DoModal();
- }
- }
- HBRUSH CStartView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
- {
- HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
- switch (nCtlColor)
- {
- case CTLCOLOR_DLG:
- hbr = m_BkBrush;
- break;
- case CTLCOLOR_STATIC:
- hbr = m_BkBrush;
- break;
- }
- return hbr;
- }
- /**************************************************************************************************
- 函 数 名 :OnStnClickedDictConfig
- 功能描述 :“其它配置”用于配置数据字典
- 输入参数 :无
- 输出参数 :无
- 返 回 值 :void
- **************************************************************************************************/
- void CStartView::OnStnClickedDictConfig()
- {
- DictView dlg(this);
- dlg.DoModal();
- }
|