chenluhua1980
2026-01-06 4d9d8d22e3666076988c30afb4e7c6fe365c19aa
SourceCode/Bond/Servo/ServoDlg.cpp
@@ -93,9 +93,11 @@
   m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
   m_crBkgnd = APPDLG_BACKGROUND_COLOR;
   m_hbrBkgnd = nullptr;
   m_nLeftPanelType = 2;
   m_pTerminalDisplayDlg = nullptr;
   m_pObserver = nullptr;
   m_pPanelMaster = nullptr;
   m_pPanelProduction = nullptr;
   m_pPanelEquipment = nullptr;
   m_pPanelAttributes = nullptr;
   m_pPageGraph1 = nullptr;
@@ -141,6 +143,10 @@
   ON_UPDATE_COMMAND_UI(ID_MENU_TEST_MESSAGE_CLEAR, &CServoDlg::OnUpdateMenuTestMessageClear)
   ON_COMMAND(ID_MENU_TOOLS_CLIENT_LIST, &CServoDlg::OnMenuToolsClientList)
   ON_UPDATE_COMMAND_UI(ID_MENU_TOOLS_CLIENT_LIST, &CServoDlg::OnUpdateMenuToolsClientList)
   ON_COMMAND(ID_MENU_WND_TEST_PANEL, &CServoDlg::OnMenuWndTestPanel)
   ON_UPDATE_COMMAND_UI(ID_MENU_WND_TEST_PANEL, &CServoDlg::OnUpdateMenuWndTestPanel)
   ON_COMMAND(ID_MENU_WND_PRO_PANEL, &CServoDlg::OnMenuWndProPanel)
   ON_UPDATE_COMMAND_UI(ID_MENU_WND_PRO_PANEL, &CServoDlg::OnUpdateMenuWndProPanel)
   ON_COMMAND(ID_MENU_HELP_ABOUT, &CServoDlg::OnMenuHelpAbout)
   ON_WM_INITMENUPOPUP()
   ON_WM_TIMER()
@@ -422,10 +428,19 @@
   m_pTab->SetBkgndColor(RGB(222, 222, 222));
   ShowChildPage(0);
   // 读取面板宽
   CString strIniFile;
   strIniFile.Format(_T("%s\\%s.ini"), (LPTSTR)(LPCTSTR)theApp.m_strAppDir, (LPTSTR)(LPCTSTR)theApp.m_strAppFile);
   int nPanelWidth = GetPrivateProfileInt(_T("App"), _T("MasterPanelWidth"),
      int((double)GetSystemMetrics(SM_CXSCREEN) * 0.25), (LPTSTR)(LPCTSTR)strIniFile);
   m_pPanelMaster = new CPanelMaster();
   m_pPanelMaster->setPanelWidth(nPanelWidth);
   m_pPanelMaster->Create(IDD_PANEL_MASTER, this);
   m_pPanelMaster->ShowWindow(SW_SHOW);
   m_pPanelProduction = new CPanelProduction();
   m_pPanelProduction->setPanelWidth(nPanelWidth);
   m_pPanelProduction->Create(IDD_PANEL_PRODUCTION, this);
   SetLeftPanelType(m_nLeftPanelType, false);
   m_pPanelEquipment = new CPanelEquipment();
   m_pPanelEquipment->Create(IDD_PANEL_EQUIPMENT, this);
   m_pPanelAttributes = new CPanelAttributes();
@@ -685,6 +700,28 @@
   pCmdUI->Enable(TRUE);
}
void CServoDlg::OnMenuWndTestPanel()
{
   SetLeftPanelType(1);
}
void CServoDlg::OnUpdateMenuWndTestPanel(CCmdUI* pCmdUI)
{
   pCmdUI->Enable(TRUE);
   pCmdUI->SetCheck(m_nLeftPanelType == 1);
}
void CServoDlg::OnMenuWndProPanel()
{
   SetLeftPanelType(2);
}
void CServoDlg::OnUpdateMenuWndProPanel(CCmdUI* pCmdUI)
{
   pCmdUI->Enable(TRUE);
   pCmdUI->SetCheck(m_nLeftPanelType == 2);
}
void CServoDlg::OnMenuHelpAbout()
{
   theApp.m_model.getMaster().test();
@@ -754,6 +791,12 @@
      m_pPanelMaster->DestroyWindow();
      delete m_pPanelMaster;
      m_pPanelMaster = nullptr;
   }
   if (m_pPanelProduction != nullptr) {
      m_pPanelProduction->DestroyWindow();
      delete m_pPanelProduction;
      m_pPanelProduction = nullptr;
   }
   if (m_pPanelEquipment != nullptr) {
@@ -856,9 +899,16 @@
   
   int nPanelWidth = 0;
   if (m_pPanelMaster != nullptr) {
   if (m_pPanelMaster != nullptr && ::IsWindow(m_pPanelMaster->GetSafeHwnd())
      && m_pPanelMaster->IsWindowVisible()) {
      nPanelWidth = m_pPanelMaster->getPanelWidth();
      m_pPanelMaster->MoveWindow(x, y, nPanelWidth, y2 - y);
      x += nPanelWidth;
   }
   if (m_pPanelProduction != nullptr && m_pPanelProduction->IsWindowVisible()) {
      nPanelWidth = m_pPanelProduction->getPanelWidth();
      m_pPanelProduction->MoveWindow(x, y, nPanelWidth, y2 - y);
      x += nPanelWidth;
   }
@@ -891,6 +941,32 @@
   m_pMyStatusbar->MoveWindow(0, y2, rcClient.Width(), STATUSBAR_HEIGHT);
}
void CServoDlg::SetLeftPanelType(int type, bool resize)
{
   if (type != 1 && type != 2) {
      type = 1;
   }
   m_nLeftPanelType = type;
   if (m_pPanelMaster != nullptr) {
      m_pPanelMaster->ShowWindow(SW_HIDE);
   }
   if (m_pPanelProduction != nullptr) {
      m_pPanelProduction->ShowWindow(SW_HIDE);
   }
   if (type == 1 && m_pPanelMaster != nullptr) {
      m_pPanelMaster->ShowWindow(SW_SHOW);
   }
   else if (type == 2 && m_pPanelProduction != nullptr) {
      m_pPanelProduction->ShowWindow(SW_SHOW);
   }
   if (resize && ::IsWindow(m_hWnd)) {
      Resize();
      DrawMenuBar();
   }
}
void CServoDlg::OnClose()
@@ -965,7 +1041,20 @@
LRESULT CServoDlg::OnPanelResize(WPARAM wParam, LPARAM lParam)
{
   int width = (int)wParam;
   // m_pPanel->SetPanelWidth(width);
   if (m_pPanelMaster != nullptr) {
      m_pPanelMaster->setPanelWidth(width);
   }
   if (m_pPanelProduction != nullptr) {
      m_pPanelProduction->setPanelWidth(width);
   }
   CString strIniFile, strValue;
   strIniFile.Format(_T("%s\\%s.ini"), (LPTSTR)(LPCTSTR)theApp.m_strAppDir, (LPTSTR)(LPCTSTR)theApp.m_strAppFile);
   strValue.Format(_T("%d"), width);
   WritePrivateProfileString(_T("App"), _T("MasterPanelWidth"),
      (LPTSTR)(LPCTSTR)strValue, (LPTSTR)(LPCTSTR)strIniFile);
   Resize();
   return 0;
@@ -1226,4 +1315,4 @@
   }
   return strText;
}
}