#include "stdafx.h" #include "CReportEditDlg.h" #include "Servo.h" #include "resource.h" #include IMPLEMENT_DYNAMIC(CReportEditDlg, CDialogEx) CReportEditDlg::CReportEditDlg(const CString& title, int rptId, const std::vector& vids, CWnd* pParent) : CDialogEx(IDD_DIALOG_REPORT_EDIT, pParent) , m_strTitle(title) , m_rptId(rptId) , m_vids(vids) { } CReportEditDlg::~CReportEditDlg() { } void CReportEditDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_EDIT_RPT_ID, m_editId); DDX_Control(pDX, IDC_LIST_RPT_VARS, m_listVars); } BEGIN_MESSAGE_MAP(CReportEditDlg, CDialogEx) END_MESSAGE_MAP() BOOL CReportEditDlg::OnInitDialog() { CDialogEx::OnInitDialog(); SetWindowText(m_strTitle); CString strId; strId.Format(_T("%d"), m_rptId); m_editId.SetWindowText(strId); m_editId.SetReadOnly(TRUE); // 初始化列表 m_listVars.SetExtendedStyle(m_listVars.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_CHECKBOXES); m_listVars.InsertColumn(0, _T("ID"), LVCFMT_LEFT, 60); m_listVars.InsertColumn(1, _T("名称"), LVCFMT_LEFT, 140); m_listVars.InsertColumn(2, _T("格式"), LVCFMT_LEFT, 80); auto& vars = theApp.m_model.m_hsmsPassive.getVariables(); for (int i = 0; i < (int)vars.size(); ++i) { auto v = vars[i]; if (v == nullptr) continue; int idx = m_listVars.InsertItem(m_listVars.GetItemCount(), std::to_string(v->getVarialbleId()).c_str()); m_listVars.SetItemText(idx, 1, v->getName().c_str()); m_listVars.SetItemText(idx, 2, SERVO::CVariable::formatToString(v->getFormat()).c_str()); m_listVars.SetItemData(idx, (DWORD_PTR)v->getVarialbleId()); if (std::find(m_vids.begin(), m_vids.end(), v->getVarialbleId()) != m_vids.end()) { m_listVars.SetCheck(idx, TRUE); } } return TRUE; } void CReportEditDlg::OnOK() { std::vector selected; int count = m_listVars.GetItemCount(); for (int i = 0; i < count; ++i) { if (m_listVars.GetCheck(i)) { selected.push_back((unsigned int)m_listVars.GetItemData(i)); } } if (selected.empty()) { AfxMessageBox(_T("至少选择一个变量")); return; } m_vids.swap(selected); CDialogEx::OnOK(); }