From 5a66d26a2899a2450a50f00d09c728ae151715be Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期三, 23 七月 2025 11:19:42 +0800
Subject: [PATCH] Merge branch 'clh' into liuyang

---
 SourceCode/Bond/Servo/CCustomCheckBox.cpp |   56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 56 insertions(+), 0 deletions(-)

diff --git a/SourceCode/Bond/Servo/CCustomCheckBox.cpp b/SourceCode/Bond/Servo/CCustomCheckBox.cpp
new file mode 100644
index 0000000..56a4612
--- /dev/null
+++ b/SourceCode/Bond/Servo/CCustomCheckBox.cpp
@@ -0,0 +1,56 @@
+#include "stdafx.h"
+#include "CCustomCheckBox.h"
+
+
+CCustomCheckBox::CCustomCheckBox()
+    : m_bgColor(RGB(255, 255, 255)), m_textColor(RGB(0, 0, 0))
+{
+    m_brush.CreateSolidBrush(m_bgColor);
+}
+
+CCustomCheckBox::~CCustomCheckBox()
+{
+
+}
+
+void CCustomCheckBox::SetBackgroundColor(COLORREF color)
+{
+    m_bgColor = color;
+    if (m_brush.GetSafeHandle())
+        m_brush.DeleteObject();
+    m_brush.CreateSolidBrush(m_bgColor);
+    Invalidate();
+}
+
+void CCustomCheckBox::SetTextColor(COLORREF color)
+{
+    m_textColor = color;
+    Invalidate();
+}
+
+void CCustomCheckBox::SetNotifyHwnd(HWND hWnd)
+{
+    m_hNotifyWnd = hWnd;
+}
+
+void CCustomCheckBox::OnClicked()
+{
+    BOOL bChecked = (GetCheck() == BST_CHECKED);
+
+    // 你可以定义自己的自定义消息
+    if (m_hNotifyWnd && ::IsWindow(m_hNotifyWnd)) {
+        ::PostMessage(m_hNotifyWnd, WM_CHECKBOX_STATE_CHANGED, GetDlgCtrlID(), bChecked);
+    }
+}
+
+BEGIN_MESSAGE_MAP(CCustomCheckBox, CButton)
+    ON_WM_CTLCOLOR_REFLECT()
+    ON_CONTROL_REFLECT(BN_CLICKED, &CCustomCheckBox::OnClicked)
+END_MESSAGE_MAP()
+
+HBRUSH CCustomCheckBox::CtlColor(CDC* pDC, UINT /*nCtlColor*/)
+{
+    pDC->SetBkMode(TRANSPARENT);
+    pDC->SetTextColor(m_textColor);
+    return (HBRUSH)m_brush.GetSafeHandle();
+}
\ No newline at end of file

--
Gitblit v1.9.3