#pragma once #include "afxdialogex.h" #include "RecipeManager.h" // CRecipeDeviceBindDlg 对话框 class CRecipeDeviceBindDlg : public CDialogEx { DECLARE_DYNAMIC(CRecipeDeviceBindDlg) public: CRecipeDeviceBindDlg(CWnd* pParent = nullptr); // 标准构造函数 virtual ~CRecipeDeviceBindDlg(); const RecipeInfo& GetRecipeInfo() const; void SetRecipeInfo(const RecipeInfo& info); // 对话框数据 #ifdef AFX_DESIGN_TIME enum { IDD = IDD_DIALOG_RECIPE_DEVICE_BIND }; #endif protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 virtual BOOL OnInitDialog(); afx_msg void OnClose(); afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg void OnBnClickedOk(); DECLARE_MESSAGE_MAP() private: void ReleaseDeviceControls(); void CreateDeviceControls(int nXStart, int nYStart, int nTotalControlWidth, int nRowHeight); bool FillDeviceInfo(int idx, int nDeviceID, const CString& strDeviceName, int nSelectedRecipeID = -1); bool FillComboRecipeList(CComboBox* pCombo, int nDeviceID, int nSelectedRecipeID = -1); struct DeviceWidget { CEdit* editDeviceID; CEdit* editDeviceName; CComboBox* comboRecipeID; }; CFont m_font; CString m_strPPID; CString m_strDesc; RecipeInfo m_recipe; std::vector m_vecDevices; };