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