LAPTOP-SNT8I5JK\Boounion
2025-05-30 405bd36e812c3645e8d9d84700777e2eaeb036ec
SourceCode/Bond/Servo/CMyStatusbar.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,117 @@
// CMyStatusbar.cpp: å®žçŽ°æ–‡ä»¶
//
#include "stdafx.h"
#include "Servo.h"
#include "CMyStatusbar.h"
#include "afxdialogex.h"
// CMyStatusbar å¯¹è¯æ¡†
IMPLEMENT_DYNAMIC(CMyStatusbar, CDialogEx)
CMyStatusbar::CMyStatusbar(CWnd* pParent /*=nullptr*/)
   : CDialogEx(IDD_STATUSBAR, pParent)
{
   m_crBkgnd = STATUSBAR_BK_NORMAL;
}
CMyStatusbar::~CMyStatusbar()
{
}
void CMyStatusbar::DoDataExchange(CDataExchange* pDX)
{
   CDialogEx::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CMyStatusbar, CDialogEx)
   ON_WM_CTLCOLOR()
   ON_WM_DESTROY()
   ON_WM_SIZE()
END_MESSAGE_MAP()
// CMyStatusbar æ¶ˆæ¯å¤„理程序
void CMyStatusbar::setBackgroundColor(COLORREF color)
{
   if (m_brBkgnd.GetSafeHandle() != nullptr) {
      m_brBkgnd.DeleteObject();
   }
   m_brBkgnd.CreateSolidBrush(color);
   Invalidate();
   UpdateWindow();
}
void CMyStatusbar::setForegroundColor(COLORREF cr)
{
   m_crForeground = cr;
   Invalidate();
   UpdateWindow();
}
void CMyStatusbar::setRunTimeText(const char* pszText)
{
   SetDlgItemText(IDC_LABEL_RUNTIME, pszText);
}
BOOL CMyStatusbar::OnInitDialog()
{
   CDialogEx::OnInitDialog();
   // TODO:  åœ¨æ­¤æ·»åŠ é¢å¤–çš„åˆå§‹åŒ–
   return TRUE;  // return TRUE unless you set the focus to a control
              // å¼‚常: OCX å±žæ€§é¡µåº”返回 FALSE
}
HBRUSH CMyStatusbar::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
   HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
   // TODO:  åœ¨æ­¤æ›´æ”¹ DC çš„任何特性
   if (nCtlColor == CTLCOLOR_STATIC) {
      pDC->SetBkMode(TRANSPARENT);
      pDC->SetBkColor(m_crBkgnd);
      pDC->SetTextColor(m_crForeground);
   }
   if (m_brBkgnd.GetSafeHandle() == nullptr) {
      m_brBkgnd.CreateSolidBrush(m_crBkgnd);
   }
   return (HBRUSH)m_brBkgnd;
}
void CMyStatusbar::OnDestroy()
{
   CDialogEx::OnDestroy();
   // TODO: åœ¨æ­¤å¤„添加消息处理程序代码
}
void CMyStatusbar::OnSize(UINT nType, int cx, int cy)
{
   CDialogEx::OnSize(nType, cx, cy);
   if (nullptr == GetDlgItem(IDC_LABEL_RUNTIME)) return;
   Resize();
}
void CMyStatusbar::Resize()
{
   CRect rcClient, rcItem;
   CWnd* pItem = nullptr;
   int x;
   GetClientRect(&rcClient);
   x = 120;
   pItem = GetDlgItem(IDC_LABEL_RUNTIME);
   pItem->GetClientRect(rcItem);
   pItem->MoveWindow(x, (rcClient.Height() - rcItem.Height()) / 2, rcItem.Width(), rcItem.Height());
}