// 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, 88, 32), this, 1001);
|
m_ctrlJobSlotGrid.SetGridSize(1, 8);
|
m_ctrlJobSlotGrid.SetColors(RGB(34, 177, 76), RGB(200, 200, 200));
|
|
auto statusMap = m_pPort->getScanCassetteMap();
|
for (int i = 0; i < 8; ++i) {
|
bool isSet = (statusMap >> i) & 1;
|
m_ctrlJobSlotGrid.SetSlotStatus(0, i, isSet);
|
}
|
|
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,
|
34 * 8, 32);
|
}
|