From 2af991c1c72211b3b6b7fda703846bc017bc1908 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期一, 10 三月 2025 11:25:33 +0800
Subject: [PATCH] 1.修复上一次合并代码遗留问题;
---
SourceCode/Bond/Servo/ServoDlg.cpp | 149 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 149 insertions(+), 0 deletions(-)
diff --git a/SourceCode/Bond/Servo/ServoDlg.cpp b/SourceCode/Bond/Servo/ServoDlg.cpp
index f6b355c..90ee383 100644
--- a/SourceCode/Bond/Servo/ServoDlg.cpp
+++ b/SourceCode/Bond/Servo/ServoDlg.cpp
@@ -88,8 +88,12 @@
m_bShowAlarmWnd = FALSE;
m_bIsRobotMoving = FALSE;
m_pLogDlg = nullptr;
+ m_pAlarmDlg = nullptr;
m_pTerminalDisplayDlg = nullptr;
m_pObserver = nullptr;
+ m_pPanelMaster = nullptr;
+ m_pPanelEquipment = nullptr;
+ m_pPanelAttributes = nullptr;
}
void CServoDlg::DoDataExchange(CDataExchange* pDX)
@@ -111,6 +115,7 @@
ON_WM_SIZE()
ON_WM_CLOSE()
ON_MESSAGE(ID_MSG_LOGDLG_HIDE, &CServoDlg::OnLogDlgHide)
+ ON_MESSAGE(ID_MSG_ALARMDLG_HIDE, &CServoDlg::OnAlarmDlgHide)
ON_WM_MOVING()
ON_WM_MOVE()
ON_COMMAND(ID_MENU_FILE_EXIT, &CServoDlg::OnMenuFileExit)
@@ -126,6 +131,9 @@
ON_WM_TIMER()
ON_WM_ERASEBKGND()
ON_BN_CLICKED(IDC_BUTTON_ALARM, &CServoDlg::OnBnClickedButtonAlarm)
+ ON_BN_CLICKED(IDC_BUTTON_ALARM, &CServoDlg::OnBnClickedButtonAlarm)
+ ON_NOTIFY(BYSERVOGRAPH_ITEM_CLICKED, IDC_SERVO_GRAPH1, &CServoDlg::OnGraphItemClicked)
+ ON_MESSAGE(ID_MSG_PANEL_RESIZE, OnPanelResize)
END_MESSAGE_MAP()
@@ -163,6 +171,35 @@
}
}
}
+ else if (RX_CODE_SELECT_EQUIPMENT == code) {
+ SERVO::CEquipment* pEquipment = nullptr;
+ if (pAny->getPtrValue("ptr", (void*&)pEquipment)) {
+ ASSERT(pEquipment);
+ ASSERT(m_pPanelEquipment);
+ ASSERT(m_pPanelAttributes);
+ m_pPanelEquipment->SetEquipment(pEquipment);
+ m_pPanelAttributes->ShowWindow(SW_HIDE);
+ if (!m_pPanelEquipment->IsWindowVisible()) {
+ m_pPanelEquipment->ShowWindow(SW_SHOW);
+ Resize();
+ }
+ }
+ }
+ else if (RX_CODE_SELECT_STEP == code) {
+ SERVO::CStep* pStep = nullptr;
+ if (pAny->getPtrValue("ptr", (void*&)pStep)) {
+ ASSERT(pStep);
+ ASSERT(m_pPanelEquipment);
+ ASSERT(m_pPanelAttributes);
+ m_pPanelEquipment->ShowWindow(SW_HIDE);
+ m_pPanelAttributes->loadDataFromStep(pStep);
+ if (!m_pPanelAttributes->IsWindowVisible()) {
+ m_pPanelAttributes->ShowWindow(SW_SHOW);
+ Resize();
+ }
+ }
+ }
+
pAny->release();
}, [&]() -> void {
// onComplete
@@ -277,6 +314,8 @@
m_pGraph->SetBoxText(INDICATE_ROBOT_ARM2, "6", "Robot");
+
+
// Vacuum bake
m_pGraph->AddIndicateBox(INDICATE_VACUUM_BAKE, 396, 516, 48, RGB(22, 22, 22),
RGB(255, 127, 39), RGB(0, 176, 80));
@@ -293,6 +332,17 @@
m_pGraph->AddIndicateBox(INDICATE_MEASUREMENT, 736, 516, 48, RGB(22, 22, 22),
RGB(255, 127, 39), RGB(0, 176, 80));
m_pGraph->SetBoxText(INDICATE_MEASUREMENT, "13", "Measurement");
+
+
+
+ m_pPanelMaster = new CPanelMaster();
+ m_pPanelMaster->Create(IDD_PANEL_MASTER, this);
+ m_pPanelMaster->ShowWindow(SW_SHOW);
+ m_pPanelEquipment = new CPanelEquipment();
+ m_pPanelEquipment->Create(IDD_PANEL_EQUIPMENT, this);
+ m_pPanelAttributes = new CPanelAttributes();
+ m_pPanelAttributes->Create(IDD_PANEL_ATTRIBUTES, this);
+
// 调整初始窗口位置
@@ -317,6 +367,13 @@
// 相当于延时调用master的初始化
theApp.m_model.m_master.init();
+
+
+ // 绑定数据
+ {
+ SERVO::CEquipment* pEquipment = theApp.m_model.m_master.getEquipment(EQ_ID_EFEM);
+ m_pGraph->SetIndicateBoxData(INDICATE_ROBOT_ARM1, pEquipment);
+ }
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
@@ -527,12 +584,37 @@
delete m_pLogDlg;
m_pLogDlg = nullptr;
}
+
+ if (m_pAlarmDlg != nullptr) {
+ m_pAlarmDlg->DestroyWindow();
+ delete m_pAlarmDlg;
+ m_pAlarmDlg = nullptr;
+ }
+
if (m_pTerminalDisplayDlg != nullptr) {
m_pTerminalDisplayDlg->DestroyWindow();
delete m_pTerminalDisplayDlg;
m_pTerminalDisplayDlg = nullptr;
}
+ if (m_pPanelMaster != nullptr) {
+ m_pPanelMaster->DestroyWindow();
+ delete m_pPanelMaster;
+ m_pPanelMaster = nullptr;
+ }
+
+ if (m_pPanelEquipment != nullptr) {
+ m_pPanelEquipment->DestroyWindow();
+ delete m_pPanelEquipment;
+ m_pPanelEquipment = nullptr;
+ }
+
+ if (m_pPanelAttributes != nullptr) {
+ m_pPanelAttributes->DestroyWindow();
+ delete m_pPanelAttributes;
+ m_pPanelAttributes = nullptr;
+ }
+
if (m_hbrBkgnd != nullptr) {
::DeleteObject(m_hbrBkgnd);
}
@@ -547,6 +629,16 @@
void CServoDlg::OnBnClickedButtonLog()
{
m_bShowLogWnd = !m_bShowLogWnd;
+
+ // 如果要显示日志窗口,则隐藏报警窗口
+ if (m_bShowLogWnd) {
+ m_bShowAlarmWnd = false;
+ if (m_pAlarmDlg != nullptr) {
+ m_pAlarmDlg->ShowWindow(SW_HIDE);
+ UpdateAlarmBtn();
+ }
+ }
+
if (m_pLogDlg == nullptr) {
m_pLogDlg = new CLogDlg();
m_pLogDlg->Create(IDD_DIALOG_LOG, this);
@@ -731,6 +823,25 @@
x = 0;
y = 0;
+ int nPanelWidth = 0;
+ if (m_pPanelMaster != nullptr) {
+ nPanelWidth = m_pPanelMaster->getPanelWidth();
+ m_pPanelMaster->MoveWindow(x, y, nPanelWidth, rcClient.Height());
+ x += nPanelWidth;
+ }
+
+ if (m_pPanelEquipment != nullptr && m_pPanelEquipment->IsWindowVisible()) {
+ nPanelWidth = m_pPanelEquipment->getPanelWidth();
+ m_pPanelEquipment->MoveWindow(x, y, nPanelWidth, rcClient.Height());
+ x += nPanelWidth;
+ }
+
+ if (m_pPanelAttributes != nullptr && m_pPanelAttributes->IsWindowVisible()) {
+ nPanelWidth = m_pPanelAttributes->getPanelWidth();
+ m_pPanelAttributes->MoveWindow(x, y, nPanelWidth, rcClient.Height());
+ x += nPanelWidth;
+ }
+
pItem = GetDlgItem(IDC_SERVO_GRAPH1);
pItem->GetClientRect(&rcItem);
pItem->MoveWindow(x, y, rcItem.Width(), rcItem.Height());
@@ -772,6 +883,15 @@
return 0;
}
+LRESULT CServoDlg::OnAlarmDlgHide(WPARAM wParam, LPARAM lParam)
+{
+ m_bShowAlarmWnd = FALSE;
+ UpdateAlarmBtn();
+ LOGE("OnAlarmDlgHide");
+
+ return 0;
+}
+
void CServoDlg::OnMoving(UINT fwSide, LPRECT pRect)
{
CDialogEx::OnMoving(fwSide, pRect);
@@ -783,6 +903,12 @@
CRect rcWnd;
GetWindowRect(&rcWnd);
m_pLogDlg->MoveWindow(rcWnd.left, rcWnd.bottom - 8, rcWnd.Width(), 200);
+ }
+
+ if (m_pAlarmDlg != nullptr && !m_pAlarmDlg->IsZoomed()) {
+ CRect rcWnd;
+ GetWindowRect(&rcWnd);
+ m_pAlarmDlg->MoveWindow(rcWnd.left, rcWnd.bottom - 8, rcWnd.Width(), 200);
}
CDialogEx::OnMove(x, y);
@@ -828,3 +954,26 @@
CAlarmDlg dlg;
dlg.DoModal();
}
+
+void CServoDlg::OnGraphItemClicked(NMHDR* pNMHDR, LRESULT* pResult)
+{
+ BYSERVOGRAPH_NMHDR* pGraphNmhdr = reinterpret_cast<BYSERVOGRAPH_NMHDR*>(pNMHDR);
+ CString s; s.Format(_T("OnGraphItemClicked %d"), pGraphNmhdr->dwData);
+ SERVO::CEquipment* pEquipment = (SERVO::CEquipment*)m_pGraph->GetIndicateBoxData(pGraphNmhdr->dwData);
+ if (pEquipment != nullptr) {
+ AfxMessageBox(pEquipment->getName().c_str());
+ }
+
+
+ *pResult = 0;
+}
+
+LRESULT CServoDlg::OnPanelResize(WPARAM wParam, LPARAM lParam)
+{
+ int width = wParam;
+ // m_pPanel->SetPanelWidth(width);
+ Resize();
+
+ return 0;
+}
+
--
Gitblit v1.9.3