LAPTOP-SNT8I5JK\Boounion
2025-07-28 e51c6d1360f9679dd8e4dd3379ce0db1886badbf
SourceCode/Bond/Servo/CPageReport.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,126 @@
// CPageReport.cpp: å®žçŽ°æ–‡ä»¶
//
#include "stdafx.h"
#include "Servo.h"
#include "CPageReport.h"
#include "afxdialogex.h"
// CPageReport å¯¹è¯æ¡†
IMPLEMENT_DYNAMIC(CPageReport, CHMPropertyPage)
CPageReport::CPageReport(CWnd* pParent /*=nullptr*/)
   : CHMPropertyPage(IDD_PAGE_REPORT, pParent)
{
}
CPageReport::~CPageReport()
{
}
void CPageReport::DoDataExchange(CDataExchange* pDX)
{
   CHMPropertyPage::DoDataExchange(pDX);
   DDX_Control(pDX, IDC_LIST1, m_listCtrl);
}
BEGIN_MESSAGE_MAP(CPageReport, CHMPropertyPage)
   ON_WM_CTLCOLOR()
   ON_WM_DESTROY()
   ON_WM_SIZE()
END_MESSAGE_MAP()
// CPageReport æ¶ˆæ¯å¤„理程序
BOOL CPageReport::OnInitDialog()
{
   CHMPropertyPage::OnInitDialog();
   // è¯»å‡ºåˆ—宽
   CString strIniFile, strItem;
   strIniFile.Format(_T("%s\\configuration.ini"), (LPTSTR)(LPCTSTR)theApp.m_strAppDir);
   int width[8] = { 0, 218, 180, 180, 180, 180, 180, 180 };
   for (int i = 0; i < 8; i++) {
      strItem.Format(_T("Col_%d_Width"), i);
      width[i] = GetPrivateProfileInt("PageReportListCtrl", strItem, width[i], strIniFile);
   }
   // æŠ¥è¡¨æŽ§ä»¶
   DWORD dwStyle = m_listCtrl.GetExtendedStyle();
   dwStyle |= LVS_EX_FULLROWSELECT;
   dwStyle |= LVS_EX_GRIDLINES;
   m_listCtrl.SetExtendedStyle(dwStyle);
   HIMAGELIST imageList = ImageList_Create(24, 24, ILC_COLOR24, 1, 1);
   ListView_SetImageList(m_listCtrl.GetSafeHwnd(), imageList, LVSIL_SMALL);
   m_listCtrl.InsertColumn(0, _T(""), LVCFMT_RIGHT, width[0]);
   m_listCtrl.InsertColumn(1, _T("RPT ID"), LVCFMT_LEFT, width[1]);
   m_listCtrl.InsertColumn(2, _T("VID"), LVCFMT_LEFT, width[2]);
   loadReports();
   return TRUE;  // return TRUE unless you set the focus to a control
              // å¼‚常: OCX å±žæ€§é¡µåº”返回 FALSE
   return TRUE;  // return TRUE unless you set the focus to a control
              // å¼‚常: OCX å±žæ€§é¡µåº”返回 FALSE
}
HBRUSH CPageReport::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
   HBRUSH hbr = CHMPropertyPage::OnCtlColor(pDC, pWnd, nCtlColor);
   // TODO:  åœ¨æ­¤æ›´æ”¹ DC çš„任何特性
   // TODO:  å¦‚果默认的不是所需画笔,则返回另一个画笔
   return hbr;
}
void CPageReport::OnDestroy()
{
   CHMPropertyPage::OnDestroy();
   // ä¿å­˜åˆ—宽
   CString strIniFile, strItem, strTemp;
   strIniFile.Format(_T("%s\\configuration.ini"), (LPTSTR)(LPCTSTR)theApp.m_strAppDir);
   CHeaderCtrl* pHeader = m_listCtrl.GetHeaderCtrl();
   for (int i = 0; i < pHeader->GetItemCount(); i++) {
      RECT rect;
      pHeader->GetItemRect(i, &rect);
      strItem.Format(_T("Col_%d_Width"), i);
      strTemp.Format(_T("%d"), rect.right - rect.left);
      WritePrivateProfileString("PageReportListCtrl", strItem, strTemp, strIniFile);
   }
}
void CPageReport::OnSize(UINT nType, int cx, int cy)
{
   CHMPropertyPage::OnSize(nType, cx, cy);
   if (GetDlgItem(IDC_LIST1) == nullptr) return;
   CWnd* pItem;
   CRect rcClient, rcItem;
   GetClientRect(&rcClient);
   m_listCtrl.MoveWindow(12, 12, rcClient.Width() - 24, rcClient.Height() - 24);
}
void CPageReport::loadReports()
{
   auto& reports = theApp.m_model.m_hsmsPassive.getReports();
   for (auto item : reports) {
      int index = m_listCtrl.InsertItem(m_listCtrl.GetItemCount(), _T(""));
      m_listCtrl.SetItemData(index, (DWORD_PTR)item);
      m_listCtrl.SetItemText(index, 1, std::to_string(item->getReportId()).c_str());
      m_listCtrl.SetItemText(index, 2, item->getVariablesIdsText().c_str());
   }
}