From b6e370081c3692bdfcdede5106d42734d2c6ef2f Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期一, 13 一月 2025 10:58:48 +0800
Subject: [PATCH] 1.增加输入框超范围时的黄色提示;
---
SourceCode/Bond/BoounionPLC/AxisSettingsDlg.cpp | 88 ++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 85 insertions(+), 3 deletions(-)
diff --git a/SourceCode/Bond/BoounionPLC/AxisSettingsDlg.cpp b/SourceCode/Bond/BoounionPLC/AxisSettingsDlg.cpp
index ae81f43..9b58189 100644
--- a/SourceCode/Bond/BoounionPLC/AxisSettingsDlg.cpp
+++ b/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: 鍦ㄦ娣诲姞鎺т欢閫氱煡澶勭悊绋嬪簭浠g爜
SwitchToPage(2);
}
void CAxisSettingsDlg::OnBnClickedButtonAxisAnchorPointGroup3()
{
- // TODO: 鍦ㄦ娣诲姞鎺т欢閫氱煡澶勭悊绋嬪簭浠g爜
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);
+ }
+}
--
Gitblit v1.9.3