#include "stdafx.h" #include "CEventEditDlg.h" #include "Servo.h" #include "resource.h" #include IMPLEMENT_DYNAMIC(CEventEditDlg, CDialogEx) CEventEditDlg::CEventEditDlg(const CString& title, int eventId, const CString& name, const CString& desc, const std::vector& rptIds, CWnd* pParent) : CDialogEx(IDD_DIALOG_EVENT_EDIT, pParent) , m_strTitle(title) , m_eventId(eventId) , m_strName(name) , m_strDesc(desc) , m_rptIds(rptIds) { } CEventEditDlg::~CEventEditDlg() { } void CEventEditDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_EDIT_EVT_ID, m_editId); DDX_Control(pDX, IDC_EDIT_EVT_NAME, m_editName); DDX_Control(pDX, IDC_EDIT_EVT_DESC, m_editDesc); DDX_Control(pDX, IDC_LIST_EVT_RPTS, m_listRpt); } BEGIN_MESSAGE_MAP(CEventEditDlg, CDialogEx) END_MESSAGE_MAP() BOOL CEventEditDlg::OnInitDialog() { CDialogEx::OnInitDialog(); SetWindowText(m_strTitle); CString strId; strId.Format(_T("%d"), m_eventId); m_editId.SetWindowText(strId); m_editId.SetReadOnly(TRUE); m_editName.SetWindowText(m_strName); m_editDesc.SetWindowText(m_strDesc); m_listRpt.SetExtendedStyle(m_listRpt.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_CHECKBOXES); m_listRpt.InsertColumn(0, _T("RPT ID"), LVCFMT_LEFT, 120); m_listRpt.InsertColumn(1, _T("VIDs"), LVCFMT_LEFT, 240); auto& reports = theApp.m_model.m_hsmsPassive.getReports(); for (int i = 0; i < (int)reports.size(); ++i) { auto rpt = reports[i]; if (rpt == nullptr) continue; int idx = m_listRpt.InsertItem(m_listRpt.GetItemCount(), std::to_string(rpt->getReportId()).c_str()); m_listRpt.SetItemText(idx, 1, rpt->getVariablesIdsText().c_str()); m_listRpt.SetItemData(idx, (DWORD_PTR)rpt->getReportId()); if (std::find(m_rptIds.begin(), m_rptIds.end(), rpt->getReportId()) != m_rptIds.end()) { m_listRpt.SetCheck(idx, TRUE); } } return TRUE; } void CEventEditDlg::OnOK() { CString name, desc; m_editName.GetWindowText(name); m_editDesc.GetWindowText(desc); name.Trim(); desc.Trim(); if (name.IsEmpty()) { AfxMessageBox(_T("名称不能为空")); return; } std::vector selected; int count = m_listRpt.GetItemCount(); for (int i = 0; i < count; ++i) { if (m_listRpt.GetCheck(i)) { selected.push_back((unsigned int)m_listRpt.GetItemData(i)); } } if (selected.empty()) { AfxMessageBox(_T("至少选择一个Report")); return; } m_strName = name; m_strDesc = desc; m_rptIds.swap(selected); CDialogEx::OnOK(); }