From 437d3d047183eed3bbd8eb79e4b40c4a1e0427c9 Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期四, 15 一月 2026 10:39:31 +0800
Subject: [PATCH] 1.修复: CEID 校验恒通过:ceidDefined 返回 true,PauseEvent ID 不做有效性检查。Host 若下发无效 CEID,将被接受但运行时无法触发暂停,风险难以察觉。 指定事件发生时暂停;
---
SourceCode/Bond/Servo/BlButton.cpp | 24 ++++++++++++++++++++----
1 files changed, 20 insertions(+), 4 deletions(-)
diff --git a/SourceCode/Bond/Servo/BlButton.cpp b/SourceCode/Bond/Servo/BlButton.cpp
index 2bddd2b..ff75530 100644
--- a/SourceCode/Bond/Servo/BlButton.cpp
+++ b/SourceCode/Bond/Servo/BlButton.cpp
@@ -36,6 +36,7 @@
m_hIcon[1] = nullptr;
m_nIconWidth = 0;
m_nFlashState = 0;
+ m_bTextRight = FALSE;
}
@@ -159,6 +160,11 @@
return m_nFlashState != 0;
}
+void CBlButton::SetTextRight()
+{
+ m_bTextRight = TRUE;
+}
+
void CBlButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
HDC hDC = lpDrawItemStruct->hDC;
@@ -200,15 +206,24 @@
HICON hIcon = this->IsWindowEnabled() ? m_hIcon[0] : m_hIcon[01];
if (hIcon != nullptr) {
int xIcon = (rcClient.right - rcClient.top - m_nIconWidth) / 2;
+ if (m_bTextRight) {
+ xIcon = 15;
+ }
+
if (m_hMenu != nullptr) xIcon -= 10;
int yIcon = (rcClient.bottom - rcClient.top - m_nIconWidth) / 2;
- if (nTextLen != 0) {
+ if (nTextLen != 0 && !m_bTextRight) {
yIcon -= 8;
}
DrawIconEx(hDC, xIcon, yIcon,
hIcon, m_nIconWidth, m_nIconWidth, 0, 0, DI_NORMAL);
- rcText.top = yIcon + m_nIconWidth + 2;
+ if (m_bTextRight) {
+ rcText.left = xIcon + m_nIconWidth + 2;
+ }
+ else {
+ rcText.top = yIcon + m_nIconWidth + 2;
+ }
}
@@ -223,18 +238,19 @@
::SetBkMode(hDC, TRANSPARENT);
::SetTextColor(hDC, m_crText[state]);
+ UINT format1 = m_bTextRight ? DT_LEFT : DT_CENTER;
if ((BS_MULTILINE & GetStyle()) == BS_MULTILINE) {
CRect rcBound;
int height = DrawTextA(hDC, szText, (int)strlen(szText), &rcBound, DT_CENTER | DT_CALCRECT | DT_EDITCONTROL);
rcText.top = rcBound.top + (rcClient.bottom - rcClient.top - height) / 2;
rcText.bottom = rcText.top + height;
- DrawTextA(hDC, szText, (int)strlen(szText), &rcText, DT_CENTER | DT_EDITCONTROL);
+ DrawTextA(hDC, szText, (int)strlen(szText), &rcText, format1 | DT_EDITCONTROL);
}
else {
if (m_hMenu != nullptr) {
rcText.right -= (10);
}
- DrawTextA(hDC, szText, (int)strlen(szText), &rcText, DT_VCENTER | DT_CENTER | DT_SINGLELINE | DT_END_ELLIPSIS);
+ DrawTextA(hDC, szText, (int)strlen(szText), &rcText, format1 | DT_VCENTER | DT_SINGLELINE | DT_END_ELLIPSIS);
}
::SelectObject(hDC, hOldFont);
--
Gitblit v1.9.3