From 0fb528df2c1f05ef7d52827432bd934ce6f9d8cd Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期五, 12 九月 2025 09:46:59 +0800
Subject: [PATCH] Merge branch 'clh' into liuyang

---
 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