LAPTOP-SNT8I5JK\Boounion
2025-01-04 aeb4b40768164ebf38bc3cd64b17c06681356d68
SourceCode/Bond/Servo/ServoDlg.cpp
@@ -7,6 +7,7 @@
#include "ServoDlg.h"
#include "afxdialogex.h"
#include "Common.h"
#include "Log.h"
#ifdef _DEBUG
@@ -73,6 +74,7 @@
   m_crBkgnd = APPDLG_BACKGROUND_COLOR;
   m_hbrBkgnd = nullptr;
   m_bShowLogWnd = FALSE;
   m_pLogDlg = nullptr;
}
void CServoDlg::DoDataExchange(CDataExchange* pDX)
@@ -91,6 +93,10 @@
   ON_WM_DESTROY()
   ON_BN_CLICKED(IDC_BUTTON_LOG, &CServoDlg::OnBnClickedButtonLog)
   ON_WM_SIZE()
   ON_WM_CLOSE()
   ON_MESSAGE(ID_MSG_LOGDLG_HIDE, &CServoDlg::OnLogDlgHide)
   ON_WM_MOVING()
   ON_WM_MOVE()
END_MESSAGE_MAP()
@@ -206,6 +212,18 @@
   m_pGraph->SetBoxText(INDICATE_MEASUREMENT, "13", "Measurement");
   // 调整初始窗口位置
   CRect rcWnd;
   GetWindowRect(&rcWnd);
   int width = GetSystemMetrics(SM_CXSCREEN);
   int height = GetSystemMetrics(SM_CYSCREEN);
   MoveWindow((width - rcWnd.Width()) / 2, 0, rcWnd.Width(), rcWnd.Height(), TRUE);
   // model init
   theApp.m_model.init();
   UpdateLogBtn();
   Resize();
   return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
@@ -295,6 +313,12 @@
{
   CDialogEx::OnDestroy();
   if (m_pLogDlg != nullptr) {
      m_pLogDlg->DestroyWindow();
      delete m_pLogDlg;
      m_pLogDlg = nullptr;
   }
   if (m_hbrBkgnd != nullptr) {
      ::DeleteObject(m_hbrBkgnd);
   }
@@ -303,6 +327,18 @@
void CServoDlg::OnBnClickedButtonLog()
{
   m_bShowLogWnd = !m_bShowLogWnd;
   if (m_pLogDlg == nullptr) {
      m_pLogDlg = new CLogDlg();
      m_pLogDlg->Create(IDD_DIALOG_LOG, this);
      CRect rcWnd;
      GetWindowRect(&rcWnd);
      m_pLogDlg->MoveWindow(rcWnd.left, rcWnd.bottom - 8, rcWnd.Width(), 200);
   }
   ASSERT(m_pLogDlg);
   m_pLogDlg->ShowWindow(m_bShowLogWnd ? SW_SHOW : SW_HIDE);
   LOGE("OnBnClickedButtonLog");
   UpdateLogBtn();
}
@@ -314,6 +350,7 @@
   m_btnLog.SetBkgndColor(BS_NORMAL, m_bShowLogWnd ? BTN_LOG_BKGND_PRESS : BTN_LOG_BKGND_NORMAL);
   m_btnLog.SetBkgndColor(BS_HOVER, BTN_LOG_BKGND_HOVER);
   m_btnLog.SetBkgndColor(BS_PRESS, BTN_LOG_BKGND_PRESS);
   m_btnLog.Invalidate();
}
void CServoDlg::OnSize(UINT nType, int cx, int cy)
@@ -342,3 +379,35 @@
   pItem->GetClientRect(&rcItem);
   pItem->MoveWindow(x, y, rcItem.Width(), rcItem.Height());
}
void CServoDlg::OnClose()
{
   // TODO: 在此添加消息处理程序代码和/或调用默认值
   CDialogEx::OnClose();
}
LRESULT CServoDlg::OnLogDlgHide(WPARAM wParam, LPARAM lParam)
{
   m_bShowLogWnd = FALSE;
   UpdateLogBtn();
   LOGE("OnLogDlgHide");
   return 0;
}
void CServoDlg::OnMoving(UINT fwSide, LPRECT pRect)
{
   CDialogEx::OnMoving(fwSide, pRect);
}
void CServoDlg::OnMove(int x, int y)
{
   if (m_pLogDlg != nullptr && !m_pLogDlg->IsZoomed()) {
      CRect rcWnd;
      GetWindowRect(&rcWnd);
      m_pLogDlg->MoveWindow(rcWnd.left, rcWnd.bottom - 8, rcWnd.Width(), 200);
   }
   CDialogEx::OnMove(x, y);
}