From 829fe6c6bc33d53fda9c31fd45a37e1df87befff Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期五, 30 一月 2026 11:16:24 +0800
Subject: [PATCH] Merge branch 'clh' into liuyang

---
 SourceCode/Bond/Servo/CMyStatusbar.cpp |  126 ++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 122 insertions(+), 4 deletions(-)

diff --git a/SourceCode/Bond/Servo/CMyStatusbar.cpp b/SourceCode/Bond/Servo/CMyStatusbar.cpp
index 1d85905..7aa389a 100644
--- a/SourceCode/Bond/Servo/CMyStatusbar.cpp
+++ b/SourceCode/Bond/Servo/CMyStatusbar.cpp
@@ -37,14 +37,31 @@
 // CMyStatusbar 娑堟伅澶勭悊绋嬪簭
 
 
-void CMyStatusbar::setBkgnd(COLORREF color)
+void CMyStatusbar::setBackgroundColor(COLORREF color)
 {
 	if (m_brBkgnd.GetSafeHandle() != nullptr) {
 		m_brBkgnd.DeleteObject();
 	}
 
+	m_crBkgnd = color;
 	m_brBkgnd.CreateSolidBrush(color);
+	m_btnCurTask.SetFaceColor(m_crBkgnd);
+	m_btnCurTask.SetFrameColor(m_crBkgnd);
+	m_btnCurTask.SetFrameColor(BS_HOVER, CColorTransfer::ApproximateColor(m_crBkgnd, 0.05));
+	m_btnCurTask.SetFrameColor(BS_PRESS, CColorTransfer::ApproximateColor(m_crBkgnd, 0.12));
+	m_btnCurTask.SetBkgndColor(BS_HOVER, CColorTransfer::ApproximateColor(m_crBkgnd, 0.05));
+	m_btnCurTask.SetBkgndColor(BS_PRESS, CColorTransfer::ApproximateColor(m_crBkgnd, 0.12));
+
 	Invalidate(); 
+	UpdateWindow();
+}
+
+void CMyStatusbar::setForegroundColor(COLORREF cr)
+{
+	m_crForeground = cr;
+	m_btnCurTask.SetTextColor(m_crForeground);
+
+	Invalidate();
 	UpdateWindow();
 }
 
@@ -53,11 +70,58 @@
 	SetDlgItemText(IDC_LABEL_RUNTIME, pszText);
 }
 
+void CMyStatusbar::setJobText(const char* pszText)
+{
+	SetDlgItemText(IDC_LABEL_JOBSTATE, pszText);
+}
+
+void CMyStatusbar::setCurTaskBtnText(const char* pszText)
+{
+	SetDlgItemText(IDC_BUTTON_ROBOTTASK, pszText);
+}
+
+void CMyStatusbar::setCimBtnText(const char* pszText)
+{
+	SetDlgItemText(IDC_BUTTON_CIM, pszText);
+}
+
+void CMyStatusbar::setCurTaskBtnColors(COLORREF face, COLORREF frame, COLORREF text)
+{
+	m_btnCurTask.SetFaceColor(face);
+	m_btnCurTask.SetFrameColor(frame);
+	m_btnCurTask.SetTextColor(text);
+	Invalidate();
+	UpdateWindow();
+}
+
+void CMyStatusbar::setCimBtnColors(COLORREF face, COLORREF frame, COLORREF text)
+{
+	m_btnCim.SetFaceColor(face);
+	m_btnCim.SetFrameColor(frame);
+	m_btnCim.SetTextColor(text);
+	Invalidate();
+	UpdateWindow();
+}
+
 BOOL CMyStatusbar::OnInitDialog()
 {
 	CDialogEx::OnInitDialog();
 
-	// TODO:  鍦ㄦ娣诲姞棰濆鐨勫垵濮嬪寲
+
+	m_btnCurTask.SubclassDlgItem(IDC_BUTTON_ROBOTTASK, this);
+	// m_btnCurTask.SetIcon(hIcon1, hIcon1, 24);
+	m_btnCurTask.SetFaceColor(m_crBkgnd);
+	m_btnCurTask.SetFrameColor(m_crBkgnd);
+	m_btnCurTask.SetFrameColor(BS_HOVER, RGB(218, 218, 218));
+	m_btnCurTask.SetFrameColor(BS_PRESS, RGB(168, 168, 168));
+	m_btnCurTask.SetTextColor(m_crForeground);
+
+	m_btnCim.SubclassDlgItem(IDC_BUTTON_CIM, this);
+	m_btnCim.SetFaceColor(m_crBkgnd);
+	m_btnCim.SetFrameColor(m_crBkgnd);
+	m_btnCim.SetFrameColor(BS_HOVER, RGB(218, 218, 218));
+	m_btnCim.SetFrameColor(BS_PRESS, RGB(168, 168, 168));
+	m_btnCim.SetTextColor(m_crForeground);
 
 	return TRUE;  // return TRUE unless you set the focus to a control
 				  // 寮傚父: OCX 灞炴�ч〉搴旇繑鍥� FALSE
@@ -72,7 +136,7 @@
 	if (nCtlColor == CTLCOLOR_STATIC) {
 		pDC->SetBkMode(TRANSPARENT);
 		pDC->SetBkColor(m_crBkgnd);
-		pDC->SetTextColor(RGB(255, 255, 255));
+		pDC->SetTextColor(m_crForeground);
 	}
 
 	if (m_brBkgnd.GetSafeHandle() == nullptr) {
@@ -89,6 +153,27 @@
 	// TODO: 鍦ㄦ澶勬坊鍔犳秷鎭鐞嗙▼搴忎唬鐮�
 }
 
+BOOL CMyStatusbar::OnCommand(WPARAM wParam, LPARAM lParam)
+{
+	CWnd* pItem;
+	CRect rcItem;
+
+	switch (LOWORD(wParam)) {
+	case IDC_BUTTON_ROBOTTASK:
+		pItem = GetDlgItem(IDC_BUTTON_ROBOTTASK);
+		pItem->GetWindowRect(rcItem);
+		GetParent()->SendMessage(ID_MSG_STATUSBAR_BTN_CLICKED, rcItem.left, LOWORD(wParam));
+		break;
+	case IDC_BUTTON_CIM:
+		pItem = GetDlgItem(IDC_BUTTON_CIM);
+		pItem->GetWindowRect(rcItem);
+		GetParent()->SendMessage(ID_MSG_STATUSBAR_BTN_CLICKED, rcItem.left, LOWORD(wParam));
+		break;
+	}
+
+	return CDialogEx::OnCommand(wParam, lParam);
+}
+
 void CMyStatusbar::OnSize(UINT nType, int cx, int cy)
 {
 	CDialogEx::OnSize(nType, cx, cy);
@@ -103,8 +188,41 @@
 	int x;
 	GetClientRect(&rcClient);
 
-	x = 120;
+	x = 20;
 	pItem = GetDlgItem(IDC_LABEL_RUNTIME);
 	pItem->GetClientRect(rcItem);
 	pItem->MoveWindow(x, (rcClient.Height() - rcItem.Height()) / 2, rcItem.Width(), rcItem.Height());
+	x += rcItem.Width();
+
+	x += 8;
+	pItem = GetDlgItem(IDC_LABEL_CUR_TASK_L);
+	pItem->GetClientRect(rcItem);
+	pItem->MoveWindow(x, (rcClient.Height() - rcItem.Height()) / 2, rcItem.Width(), rcItem.Height());
+	x += rcItem.Width();	
+
+	x += 8;
+	pItem = GetDlgItem(IDC_BUTTON_ROBOTTASK);
+	pItem->GetClientRect(rcItem);
+	pItem->MoveWindow(x, (rcClient.Height() - rcItem.Height()) / 2, rcItem.Width(), rcItem.Height());
+	x += rcItem.Width();
+
+	x += 8;
+	pItem = GetDlgItem(IDC_LABEL_CIM);
+	pItem->GetClientRect(rcItem);
+	pItem->MoveWindow(x, (rcClient.Height() - rcItem.Height()) / 2, rcItem.Width(), rcItem.Height());
+	x += rcItem.Width();
+
+	x += 8;
+	pItem = GetDlgItem(IDC_BUTTON_CIM);
+	pItem->GetClientRect(rcItem);
+	pItem->MoveWindow(x, (rcClient.Height() - rcItem.Height()) / 2, rcItem.Width(), rcItem.Height());
+	x += rcItem.Width();
+
+	x += 8;
+	pItem = GetDlgItem(IDC_LABEL_JOBSTATE);
+	if (pItem != nullptr) {
+		pItem->GetClientRect(rcItem);
+		pItem->MoveWindow(x, (rcClient.Height() - rcItem.Height()) / 2, rcItem.Width(), rcItem.Height());
+		x += rcItem.Width();
+	}
 }

--
Gitblit v1.9.3