// CRobotTaskDlg.cpp: 实现文件 // #include "stdafx.h" #include "Servo.h" #include "CRobotTaskDlg.h" #include "afxdialogex.h" // CRobotTaskDlg 对话框 IMPLEMENT_DYNAMIC(CRobotTaskDlg, CDialogEx) CRobotTaskDlg::CRobotTaskDlg(CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_DIALOG_ROBOT_TASK, pParent) { m_pRobotTask = nullptr; } CRobotTaskDlg::~CRobotTaskDlg() { } void CRobotTaskDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CRobotTaskDlg, CDialogEx) ON_WM_CTLCOLOR() ON_WM_DESTROY() ON_WM_SIZE() ON_WM_ACTIVATE() END_MESSAGE_MAP() // CRobotTaskDlg 消息处理程序 void CRobotTaskDlg::SetRobotTask(SERVO::CRobotTask* pRobotTask) { m_pRobotTask = pRobotTask; // 各控件是否显示; GetDlgItem(IDC_LABEL_NO_TASK)->ShowWindow(m_pRobotTask == nullptr ? SW_SHOW : SW_HIDE); GetDlgItem(IDC_LABEL_GET_PUT)->ShowWindow(m_pRobotTask != nullptr ? SW_SHOW : SW_HIDE); if (m_pRobotTask != nullptr) { SERVO::CEquipment* pEq1, * pEq2; pEq1 = theApp.m_model.getMaster().getEquipment(m_pRobotTask->getSrcPosition()); pEq2 = theApp.m_model.getMaster().getEquipment(m_pRobotTask->getTarPosition()); CString strText; strText.Format(_T("%s --> %s"), pEq1->getName().c_str(), pEq2->getName().c_str()); SetDlgItemText(IDC_LABEL_GET_PUT, strText); } } BOOL CRobotTaskDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // TODO: 在此添加额外的初始化 return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } HBRUSH CRobotTaskDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何特性 // TODO: 如果默认的不是所需画笔,则返回另一个画笔 return hbr; } void CRobotTaskDlg::OnDestroy() { CDialogEx::OnDestroy(); // TODO: 在此处添加消息处理程序代码 } void CRobotTaskDlg::OnSize(UINT nType, int cx, int cy) { CDialogEx::OnSize(nType, cx, cy); if (GetDlgItem(IDC_LABEL_NO_TASK) == nullptr) return; Resize(); } void CRobotTaskDlg::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized) { CWnd::OnActivate(nState, pWndOther, bMinimized); if (nState == WA_INACTIVE) { ShowWindow(SW_HIDE); } } void CRobotTaskDlg::Resize() { CRect rcClient, rcItem; CWnd* pItem; GetClientRect(&rcClient); pItem = GetDlgItem(IDC_LABEL_NO_TASK); pItem->GetClientRect(&rcItem); pItem->MoveWindow((rcClient.Width() - rcItem.Width()) / 2, (rcClient.Height() - rcItem.Height()) / 2, rcItem.Width(), rcItem.Height()); pItem = GetDlgItem(IDC_LABEL_GET_PUT); pItem->GetClientRect(&rcItem); pItem->MoveWindow(12, 12, rcItem.Width(), rcItem.Height()); }