SourceCode/Bond/Servo/CPageLinkSignal.cpp
@@ -19,6 +19,7 @@
CPageLinkSignal::CPageLinkSignal(CWnd* pParent /*=nullptr*/)
   : CHMPropertyPage(IDD_PAGE_LINK_SIGNAL, pParent)
   , m_bEnable(TRUE)
{
   m_pEquipment = nullptr;
}
@@ -30,6 +31,7 @@
void CPageLinkSignal::DoDataExchange(CDataExchange* pDX)
{
   CHMPropertyPage::DoDataExchange(pDX);
   DDX_Check(pDX, IDC_CHECK_ENABLE, m_bEnable);
}
@@ -38,6 +40,7 @@
   ON_WM_DESTROY()
   ON_WM_SIZE()
   ON_WM_TIMER()
   ON_BN_CLICKED(IDC_CHECK_ENABLE, &CPageLinkSignal::OnClickedCheckEnable)
END_MESSAGE_MAP()
@@ -56,6 +59,12 @@
   KillTimer(TIMER_ID_SIGNAL_UPDATE);
   SetTimer(TIMER_ID_SIGNAL_UPDATE, TIMER_INTERVAL_MS, nullptr);
   if (m_pEquipment) {
      m_bEnable = m_pEquipment->IsEnabled();
      UpdateData(FALSE);
   }
   return TRUE;  // return TRUE unless you set the focus to a control
              // 异常: OCX 属性页应返回 FALSE
@@ -139,6 +148,14 @@
         BTN_Y - 36,
         rcItem.Width(), rcItem.Height());
   }
   pItem = GetDlgItem(IDC_CHECK_ENABLE);
   if (pItem) {
      int nCheckboxX = max(0, BTN_X - 50);
      int nCheckboxY = max(0, BTN_Y - rcItem.Height() - 30);
      pItem->GetWindowRect(&rcItem);
      pItem->MoveWindow(nCheckboxX, nCheckboxY, rcItem.Width(), rcItem.Height());
   }
}
void CPageLinkSignal::OnTimer(UINT_PTR nIDEvent)
@@ -158,7 +175,7 @@
   for (int nRow = 0; nRow < 8; ++nRow) {
      for (int nCol = 0; nCol < 8; ++nCol) {
         BOOL bCurrentState = m_pEquipment->isLinkSignalUpstreamOn(nRow, nCol);
         BOOL bCurrentState = m_pEquipment->isLinkSignalUpstreamOn(nRow, nCol) && m_pEquipment->IsEnabled();
         UpdateSignalState(nRow, nCol, bCurrentState);
      }
   }
@@ -177,4 +194,9 @@
   }
}
void CPageLinkSignal::OnClickedCheckEnable()
{
   // TODO: 在此添加控件通知处理程序代码
   UpdateData(TRUE);
   m_pEquipment->SetEnable(m_bEnable);
}