LAPTOP-SNT8I5JK\Boounion
2025-01-13 b6e370081c3692bdfcdede5106d42734d2c6ef2f
SourceCode/Bond/BoounionPLC/AxisSettingsDlg.cpp
@@ -16,6 +16,7 @@
#define TIMER_INIT               1
#define TIMER_READ_PLC_DATA         2
#define TIMER_HIDE_TIP            3
#define ID_MSG_UPDATA_DATA_TO_UI   WM_USER + 101
@@ -62,6 +63,10 @@
   
   m_nBtnsFlashState6 = 0;
   m_nBtnsFlashState8 = 0;
   m_crTipBack = RGB(255, 127, 39);
   m_crTipText = RGB(228, 228, 228);
   m_hbrTip = CreateSolidBrush(m_crTipBack);
   m_hTipFont = nullptr;
}
CAxisSettingsDlg::~CAxisSettingsDlg()
@@ -82,6 +87,18 @@
      delete m_pAxisManager;
      m_pAxisManager = nullptr;
   }
   ::DeleteObject(m_hbrTip);
   if (m_hTipFont != nullptr) {
      ::DeleteObject(m_hTipFont);
   }
}
BOOL CAxisSettingsDlg::PreAdjustControl(CWnd* pWnd)
{
   int nCtrlID = pWnd->GetDlgCtrlID();
   if (nCtrlID == IDC_LABEL_TIP) return FALSE;
   return TRUE;
}
void CAxisSettingsDlg::DoDataExchange(CDataExchange* pDX)
@@ -759,6 +776,8 @@
   ON_WM_SIZE()
   ON_WM_TIMER()
   ON_WM_CLOSE()
   ON_WM_CTLCOLOR()
   ON_EN_KILLFOCUS(IDC_EDIT_AXIS_MODITFY_MICROMENTUM, &CAxisSettingsDlg::OnEnKillfocusEditAxisModitfyMicromentum)
END_MESSAGE_MAP()
@@ -1011,8 +1030,17 @@
void CAxisSettingsDlg::OnSize(UINT nType, int cx, int cy)
{
   CBaseDlg::OnSize(nType, cx, cy);
   if (GetDlgItem(IDC_LABEL_TIP) == nullptr) return;
   // TODO: 在此处添加消息处理程序代码
   CWnd* pItem;
   CRect rcClient;
   GetClientRect(&rcClient);
   pItem = GetDlgItem(IDC_LABEL_TIP);
   pItem->MoveWindow(0, 0, rcClient.Width(), 36);
   // 动态调整各个 CBLLabel 的字体大小
   for (auto pLabel : m_pBlLabels) {
      AdjustLabelFont(*pLabel);
@@ -1061,13 +1089,11 @@
void CAxisSettingsDlg::OnBnClickedButtonAxisAnchorPointGroup2()
{
   // TODO: 在此添加控件通知处理程序代码
   SwitchToPage(2);
}
void CAxisSettingsDlg::OnBnClickedButtonAxisAnchorPointGroup3()
{
   // TODO: 在此添加控件通知处理程序代码
   SwitchToPage(3);
}
@@ -1370,6 +1396,10 @@
      ReadPLCDataToUI(nAxisId);
   }   
   else if (TIMER_HIDE_TIP == nIDEvent) {
      KillTimer(TIMER_HIDE_TIP);
      HideTip();
   }
   CBaseDlg::OnTimer(nIDEvent);
}
@@ -1381,3 +1411,55 @@
   CBaseDlg::OnClose();
}
HBRUSH CAxisSettingsDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
   HBRUSH hbr = CBaseDlg::OnCtlColor(pDC, pWnd, nCtlColor);
   int nCtrlID = pWnd->GetDlgCtrlID();
   if (nCtrlID == IDC_LABEL_TIP) {
      pDC->SetTextColor(m_crTipText);
      pDC->SetBkColor(m_crTipBack);
      if (m_hTipFont == nullptr) {
         HFONT hFontDefault = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
         CFont* pFont = CFont::FromHandle(hFontDefault);
         LOGFONT lf;
         pFont->GetLogFont(&lf);
         lf.lfHeight -= 8;
         m_hTipFont = ::CreateFontIndirect(&lf);
         ::SelectObject(pDC->m_hDC, m_hTipFont);
      }
      return m_hbrTip;
   }
   return hbr;
}
void CAxisSettingsDlg::ShowTipText(const char* pszText, float sec)
{
   CString strText;
   strText.Format(_T(" * %s"), pszText);
   SetDlgItemText(IDC_LABEL_TIP, strText);
   GetDlgItem(IDC_LABEL_TIP)->ShowWindow(SW_SHOW);
   SetTimer(TIMER_HIDE_TIP, (int)(sec * 1000.0), nullptr);
}
void CAxisSettingsDlg::HideTip()
{
   GetDlgItem(IDC_LABEL_TIP)->ShowWindow(SW_HIDE);
}
void CAxisSettingsDlg::OnEnKillfocusEditAxisModitfyMicromentum()
{
   CString strText;
   GetDlgItemText(IDC_EDIT_AXIS_MODITFY_MICROMENTUM, strText);
   double value = atof(strText);
   if (value < 0.0 || value > 0.1) {
      ShowTipText("微动量值必须在0.0 ~ 0.1之间", 5);
   }
}