#pragma once #include "CCjPage1.h" #include "CCjPage2.h" #include "CCjPage3.h" #include "ApredTreeCtrl2.h" #define WM_AFTER_TVCHECK (WM_USER + 1000) // CControlJobManagerDlg 对话框 class CControlJobManagerDlg : public CDialogEx { DECLARE_DYNAMIC(CControlJobManagerDlg) public: CControlJobManagerDlg(CWnd* pParent = nullptr); // 标准构造函数 virtual ~CControlJobManagerDlg(); static void FreeState(); private: void Resize(); void UpdateCtrlState(); void UpdateControlJob(); bool AddPorcessJob(SERVO::CProcessJob* pj); bool RemovePorcessJob(SERVO::CProcessJob* pj); void UpProcessJobId(PJWarp* pjWarp); void UpControlJobId(SERVO::CControlJob* pControlJob); void InitData(); void LoadState(); void SaveState(); int ShowPage(int index); private: std::vector m_pages; SERVO::CControlJob* m_pControlJob; std::vector m_pjWarps; CApredTreeCtrl2 m_tree; public: struct State { SERVO::CControlJob* pControlJob = nullptr; std::vector pjWarps; }; static bool m_bHasState; static State m_state; // 对话框数据 #ifdef AFX_DESIGN_TIME enum { IDD = IDD_DIALOG_CONTROL_JOB_MANAGER }; #endif protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 DECLARE_MESSAGE_MAP() public: virtual BOOL OnInitDialog(); afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI); afx_msg void OnTvnItemChangedTree(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnDestroy(); afx_msg void OnBnClickedButtonApply(); afx_msg void OnTvnSelchangingTree1(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnBnClickedButtonBathCompletion(); afx_msg void OnTreeClick(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnTreeKeyDown(NMHDR* pNMHDR, LRESULT* pResult); afx_msg LRESULT OnAfterTvCheck(WPARAM wParam, LPARAM lParam); };