// RecipeDeviceBindDlg.cpp: 实现文件
|
//
|
|
#include "stdafx.h"
|
#include "Servo.h"
|
#include "afxdialogex.h"
|
#include "RecipeDeviceBindDlg.h"
|
#include "RecipeManager.h"
|
#include "Common.h"
|
|
#define IDC_EDIT_DEVICEID_BASE 3000
|
#define IDC_EDIT_DEVICENAME_BASE 3050
|
#define IDC_COMBO_RECIPEID_BASE 3100
|
|
// 绑定界面需要显示的设备
|
static const std::vector<DeviceMetaInfo> g_vecBindDevices = {
|
{ EQ_ID_VACUUMBAKE, EQ_NAME_VACUUMBAKE },
|
{ EQ_ID_Bonder1, EQ_NAME_BONDER1 },
|
{ EQ_ID_Bonder2, EQ_NAME_BONDER2 },
|
{ EQ_ID_BAKE_COOLING, EQ_NAME_BAKE_COOLING },
|
{ EQ_ID_MEASUREMENT, EQ_NAME_MEASUREMENT },
|
{ EQ_ID_EFEM, EQ_NAME_EFEM }
|
};
|
|
// CRecipeDeviceBindDlg 对话框
|
|
IMPLEMENT_DYNAMIC(CRecipeDeviceBindDlg, CDialogEx)
|
|
CRecipeDeviceBindDlg::CRecipeDeviceBindDlg(CWnd* pParent /*=nullptr*/)
|
: CDialogEx(IDD_DIALOG_RECIPE_DEVICE_BIND, pParent)
|
{
|
|
}
|
|
CRecipeDeviceBindDlg::~CRecipeDeviceBindDlg()
|
{
|
}
|
|
void CRecipeDeviceBindDlg::DoDataExchange(CDataExchange* pDX)
|
{
|
CDialogEx::DoDataExchange(pDX);
|
}
|
|
|
BEGIN_MESSAGE_MAP(CRecipeDeviceBindDlg, CDialogEx)
|
ON_WM_CLOSE()
|
ON_WM_SIZE()
|
END_MESSAGE_MAP()
|
|
|
// CRecipeDeviceBindDlg 消息处理程序
|
|
BOOL CRecipeDeviceBindDlg::OnInitDialog()
|
{
|
CDialogEx::OnInitDialog();
|
|
// TODO: 在此添加额外的初始化
|
// 设置固定大小(例如 600x400)
|
SetWindowPos(nullptr, 0, 0, 600, 400, SWP_NOMOVE | SWP_NOZORDER);
|
|
// 创建控件
|
const int totalControlWidth = 340;
|
CRect clientRect;
|
GetClientRect(&clientRect);
|
int xStart = (clientRect.Width() - totalControlWidth) / 2;
|
|
const int nRowHeight = 30;
|
const int yStart = 30; // 顶部起始高度
|
|
const int nRowCount = static_cast<int>(g_vecBindDevices.size());
|
for (int i = 0; i < nRowCount; ++i) {
|
int y = yStart + i * nRowHeight;
|
const auto& meta = g_vecBindDevices[i];
|
|
CEdit* pEditID = new CEdit();
|
pEditID->Create(WS_CHILD | WS_VISIBLE | WS_BORDER, CRect(xStart, y, xStart + 100, y + 25), this, IDC_EDIT_DEVICEID_BASE + i);
|
|
CString strID;
|
strID.Format(_T("%d"), meta.nDeviceID);
|
pEditID->SetWindowText(strID);
|
pEditID->SetReadOnly(TRUE); // 设备ID只读
|
|
CEdit* pEditName = new CEdit();
|
pEditName->Create(WS_CHILD | WS_VISIBLE | WS_BORDER, CRect(xStart + 110, y, xStart + 210, y + 25), this, IDC_EDIT_DEVICENAME_BASE + i);
|
pEditName->SetWindowText(CA2T(meta.strDeviceName));
|
pEditName->SetReadOnly(TRUE); // 设备名称只读
|
|
CComboBox* pCombo = new CComboBox();
|
pCombo->Create(WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST, CRect(xStart + 220, y, xStart + 340, y + 300), this, IDC_COMBO_RECIPEID_BASE + i);
|
|
// 添加选项到 ComboBox
|
m_vecDevices.push_back({ pEditID, pEditName, pCombo });
|
}
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
// 异常: OCX 属性页应返回 FALSE
|
}
|
|
void CRecipeDeviceBindDlg::OnClose()
|
{
|
// TODO: 在此添加消息处理程序代码和/或调用默认值
|
CDialogEx::OnClose();
|
|
// 清理控件
|
for (auto& device : m_vecDevices) {
|
if (device.editDeviceID) {
|
device.editDeviceID->DestroyWindow();
|
delete device.editDeviceID;
|
}
|
if (device.editDeviceName) {
|
device.editDeviceName->DestroyWindow();
|
delete device.editDeviceName;
|
}
|
if (device.comboRecipeID) {
|
device.comboRecipeID->DestroyWindow();
|
delete device.comboRecipeID;
|
}
|
}
|
m_vecDevices.clear();
|
}
|
|
void CRecipeDeviceBindDlg::OnSize(UINT nType, int cx, int cy)
|
{
|
CDialogEx::OnSize(nType, cx, cy);
|
|
// TODO: 在此处添加消息处理程序代码
|
}
|