LAPTOP-SNT8I5JK\Boounion
2025-05-23 6fc65c5cf54432d1044fbe9799aca76f7273798c
SourceCode/Bond/Servo/CPagePortStatus.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,148 @@
// CPagePortStatus.cpp: å®žçŽ°æ–‡ä»¶
//
#include "stdafx.h"
#include "Servo.h"
#include "CPagePortStatus.h"
#include "afxdialogex.h"
// CPagePortStatus å¯¹è¯æ¡†
IMPLEMENT_DYNAMIC(CPagePortStatus, CHMPropertyPage)
CPagePortStatus::CPagePortStatus(CWnd* pParent /*=nullptr*/)
   : CHMPropertyPage(IDD_PAGE_PORT_STATUS, pParent)
{
   m_pPort = nullptr;
}
CPagePortStatus::~CPagePortStatus()
{
}
void CPagePortStatus::DoDataExchange(CDataExchange* pDX)
{
   CHMPropertyPage::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CPagePortStatus, CHMPropertyPage)
   ON_WM_CTLCOLOR()
   ON_WM_DESTROY()
   ON_WM_SIZE()
END_MESSAGE_MAP()
// CPagePortStatus æ¶ˆæ¯å¤„理程序
void CPagePortStatus::setLoadPort(SERVO::CLoadPort* pPort)
{
   m_pPort = pPort;
}
BOOL CPagePortStatus::OnInitDialog()
{
   CHMPropertyPage::OnInitDialog();
   ASSERT(m_pPort);
   CComboBox* pComboBox;
   std::string strTemp;
   pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_PORT_STATUS);
   for (int i = 1; i <= 6; i++) {
      pComboBox->InsertString(i - 1, SERVO::CLoadPort::getPortStatusDescription(i, strTemp).c_str());
   }
   int portStatus = m_pPort->getPortStatus();
   if (1 <= portStatus && portStatus <= 6) {
      pComboBox->SetCurSel(portStatus - 1);
   }
   SetDlgItemInt(IDC_EDIT_CASSETTE_NO, m_pPort->getCassetteSequenceNo());
   SetDlgItemText(IDC_EDIT_CASSETTE_ID, m_pPort->getCassetteId().c_str());
   pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_LOADING_CASSETTE_TYPE);
   for (int i = 1; i <= 4; i++) {
      pComboBox->InsertString(i - 1, SERVO::CLoadPort::getLoadingCassetteTypeDescription(i, strTemp).c_str());
   }
   int loadingCassetteType = m_pPort->getLoadingCassetteType();
   if (1 <= loadingCassetteType && loadingCassetteType <= 4) {
      pComboBox->SetCurSel(loadingCassetteType - 1);
   }
   pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_QTIME_FLAG);
   for (int i = 1; i <= 2; i++) {
      pComboBox->InsertString(i - 1, SERVO::CLoadPort::getQTimeFlagDescription(i, strTemp).c_str());
   }
   int qTimeFlag = m_pPort->getQTimeFlag();
   if (1 <= qTimeFlag && qTimeFlag <= 2) {
      pComboBox->SetCurSel(qTimeFlag - 1);
   }
   pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_CASSETTE_MAPPING_STATE);
   for (int i = 1; i <= 2; i++) {
      pComboBox->InsertString(i - 1, SERVO::CLoadPort::getCassetteMappingStateDescription(i, strTemp).c_str());
   }
   int mappingState = m_pPort->getCassetteMappingState();
   if (1 <= mappingState && mappingState <= 2) {
      pComboBox->SetCurSel(mappingState - 1);
   }
   pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_CASSETTE_STATUS);
   for (int i = 1; i <= 7; i++) {
      pComboBox->InsertString(i - 1, SERVO::CLoadPort::getCassetteStatusDescription(i, strTemp).c_str());
   }
   int cassetteStatus = m_pPort->getCassetteStatus();
   if (1 <= cassetteStatus && cassetteStatus <= 7) {
      pComboBox->SetCurSel(cassetteStatus - 1);
   }
   // åˆ›å»ºJob Existence Slots控件
   m_ctrlJobSlotGrid.Create(AfxRegisterWndClass(0), _T("JobSlotGrid"),
      WS_CHILD | WS_VISIBLE, CRect(0, 0, 100, 100), this, 1001);
   m_ctrlJobSlotGrid.SetGridSize(12, 16);
   m_ctrlJobSlotGrid.SetColors(RGB(34, 177, 76), RGB(200, 200, 200));
   m_ctrlJobSlotGrid.SetSlotStatus(0, 1, true);
   m_ctrlJobSlotGrid.SetSlotStatus(1, 9, true);
   m_ctrlJobSlotGrid.SetSlotStatus(4, 9, false);
   m_ctrlJobSlotGrid.SetSlotStatus(4, 10, true, TRUE);
   return TRUE;  // return TRUE unless you set the focus to a control
              // å¼‚常: OCX å±žæ€§é¡µåº”返回 FALSE
}
HBRUSH CPagePortStatus::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
   HBRUSH hbr = CHMPropertyPage::OnCtlColor(pDC, pWnd, nCtlColor);
   // TODO:  åœ¨æ­¤æ›´æ”¹ DC çš„任何特性
   // TODO:  å¦‚果默认的不是所需画笔,则返回另一个画笔
   return hbr;
}
void CPagePortStatus::OnDestroy()
{
   CHMPropertyPage::OnDestroy();
   // TODO: åœ¨æ­¤å¤„添加消息处理程序代码
}
void CPagePortStatus::OnSize(UINT nType, int cx, int cy)
{
   CHMPropertyPage::OnSize(nType, cx, cy);
   if (GetDlgItem(IDC_COMBO_PORT_STATUS) == nullptr) return;
   // åˆ›å»ºJob Existence Slots控件
   CRect rcLabel, rcComboBox, rcClient;
   GetDlgItem(IDC_LABEL_JOB_EXISTENCE_SLOTS)->GetWindowRect(&rcLabel);
   ScreenToClient(rcLabel);
   GetDlgItem(IDC_COMBO_CASSETTE_STATUS)->GetWindowRect(&rcComboBox);
   ScreenToClient(rcComboBox);
   GetClientRect(rcClient);
   m_ctrlJobSlotGrid.MoveWindow(rcComboBox.left, rcLabel.top,
      rcClient.right - 22 - rcComboBox.left, rcClient.bottom - 12 - rcLabel.top);
}