chenluhua1980
2026-01-13 155cb7fe0dcb564729c6aecdb65815f3f0ed24e2
SourceCode/Bond/Servo/CMyStatusbar.cpp
@@ -43,7 +43,15 @@
      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();
}
@@ -51,6 +59,8 @@
void CMyStatusbar::setForegroundColor(COLORREF cr)
{
   m_crForeground = cr;
   m_btnCurTask.SetTextColor(m_crForeground);
   Invalidate();
   UpdateWindow();
}
@@ -60,11 +70,53 @@
   SetDlgItemText(IDC_LABEL_RUNTIME, 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
@@ -96,6 +148,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);
@@ -110,8 +183,33 @@
   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();
}