// DeviceRecipeParamDlg.cpp: 实现文件
|
//
|
|
#include "stdafx.h"
|
#include "Servo.h"
|
#include "afxdialogex.h"
|
#include "DeviceRecipeParamDlg.h"
|
|
|
// CDeviceRecipeParamDlg 对话框
|
|
IMPLEMENT_DYNAMIC(CDeviceRecipeParamDlg, CDialogEx)
|
|
CDeviceRecipeParamDlg::CDeviceRecipeParamDlg(CWnd* pParent /*=nullptr*/)
|
: CDialogEx(IDD_DIALOG_DEVICE_RECIPE_PARAM, pParent)
|
{
|
m_pEquipment = nullptr;
|
m_nDeviceRecipeID = 0;
|
m_strDeviceRecipeName = _T("");
|
}
|
|
CDeviceRecipeParamDlg::~CDeviceRecipeParamDlg()
|
{
|
}
|
|
void CDeviceRecipeParamDlg::setEquipment(SERVO::CEquipment* pEquipment)
|
{
|
m_pEquipment = pEquipment;
|
}
|
|
void CDeviceRecipeParamDlg::setDeviceRecipeID(int nDeviceRecipeID)
|
{
|
m_nDeviceRecipeID = nDeviceRecipeID;
|
}
|
|
void CDeviceRecipeParamDlg::setDeviceRecipeName(const CString& strDeviceRecipeName)
|
{
|
m_strDeviceRecipeName = strDeviceRecipeName;
|
}
|
|
void CDeviceRecipeParamDlg::DoDataExchange(CDataExchange* pDX)
|
{
|
CDialogEx::DoDataExchange(pDX);
|
DDX_Control(pDX, IDC_LIST_RECIPE_PARAM, m_wndRecipeParamList);
|
}
|
|
|
BEGIN_MESSAGE_MAP(CDeviceRecipeParamDlg, CDialogEx)
|
END_MESSAGE_MAP()
|
|
|
// CDeviceRecipeParamDlg 消息处理程序
|
|
BOOL CDeviceRecipeParamDlg::OnInitDialog()
|
{
|
CDialogEx::OnInitDialog();
|
|
// TODO: 在此添加额外的初始化
|
CRect rc;
|
m_wndRecipeParamList.GetClientRect(&rc);
|
int nColWidth = rc.Width() / 2;
|
m_wndRecipeParamList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
|
m_wndRecipeParamList.InsertColumn(0, _T("参数名"), LVCFMT_LEFT, nColWidth);
|
m_wndRecipeParamList.InsertColumn(1, _T("参数值"), LVCFMT_LEFT, nColWidth);
|
|
if (nullptr == m_pEquipment) {
|
return FALSE;
|
}
|
|
CString strTitle;
|
if (!m_strDeviceRecipeName.IsEmpty()) {
|
strTitle.Format(_T("%s - %s 配方参数"), m_pEquipment->getName().c_str(), m_strDeviceRecipeName);
|
}
|
else {
|
strTitle.Format(_T("%s 配方参数"), m_pEquipment->getName().c_str());
|
}
|
SetWindowText(strTitle);
|
|
SERVO::CRecipeList* pRecipeList = m_pEquipment->getRecipeList(0);
|
ASSERT(pRecipeList);
|
auto rawDatas = pRecipeList->getParamsRawData();
|
for (auto item : rawDatas) {
|
if (m_nDeviceRecipeID != 0 && item.first != m_nDeviceRecipeID) {
|
continue;
|
}
|
|
std::vector<CParam> params;
|
m_pEquipment->parsingParams((const char*)item.second.data(), item.second.size(), params);
|
for (auto p : params) {
|
CString strName(p.getName().c_str());
|
CString strValue;
|
|
switch (p.getValueType()) {
|
case PVT_INT:
|
strValue.Format(_T("%d"), p.getIntValue());
|
break;
|
case PVT_DOUBLE:
|
strValue.Format(_T("%.6f"), p.getDoubleValue());
|
break;
|
default:
|
strValue = _T("未知类型");
|
break;
|
}
|
|
int nCount = m_wndRecipeParamList.GetItemCount();
|
int nIndex = m_wndRecipeParamList.InsertItem(nCount, strName);
|
m_wndRecipeParamList.SetItemText(nIndex, 1, strValue);
|
}
|
}
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
// 异常: OCX 属性页应返回 FALSE
|
}
|