LAPTOP-SNT8I5JK\Boounion
2025-06-16 fd1333fbf52e00ff8f0b0d51ec0d707a66cc9141
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,23 @@
   SetDlgItemText(IDC_LABEL_RUNTIME, pszText);
}
void CMyStatusbar::setCurTaskBtnText(const char* pszText)
{
   SetDlgItemText(IDC_BUTTON_ROBOTTASK, pszText);
}
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));
   return TRUE;  // return TRUE unless you set the focus to a control
              // 异常: OCX 属性页应返回 FALSE
@@ -72,7 +101,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 +118,22 @@
   // 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;
   }
   return CDialogEx::OnCommand(wParam, lParam);
}
void CMyStatusbar::OnSize(UINT nType, int cx, int cy)
{
   CDialogEx::OnSize(nType, cx, cy);
@@ -103,8 +148,21 @@
   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();
}