#if !defined(__DLGPARAMDEFINE_H__) #define __DLGPARAMDEFINE_H__ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "resource.h" #include "InPlaceCtrls.h" #include "PropertyListBox.h" #include "KTParamClass.h" class CDlgParamDefine : public CDialog { public: // 构造函数 CDlgParamDefine(CWnd* pParent = NULL); protected: // 初始化类型树 void OnInitClassTree(ULONG lParent, HTREEITEM hParent); // 清除属性列表中数据 void OnCleanAttrTab(CPropertyItemTab* pTab); // 清除属性列表中数据 void OnCleanAttributeList(); // 清除约束列表中数据 void OnCleanRuleTab(CPropertyItemTab* pTab); // 清除约束列表中数据 void OnCleanRuleList(); // 添加或更新类别所有数据 void OnUpdateClassItemData(HTREEITEM hItem); // 更新类别数据 void OnUpdateClassAttrData(CPropertyItemTab* pTab, KTParamClass& cClassData); // 更新属性数据 void OnUpdateAttributeData(CPropertyItemTab* pTab, KTParamAttribute& cAttrData); // 更新约束数据 void OnUpdateRuleData(CPropertyItemTab* pTab, KTParamRule& pRule); // 转换数据类型到Item的类型 CPropertyItem::ItemStyle AsItemStyle(LPCTSTR pszDataType, BOOL bMulti = FALSE, BOOL bOverride = FALSE); // 转换数据为指定Item类型的数据 LPCTSTR AsItemString(CString& sData, LPCTSTR pszDataType); // 根据变量描述表表达式获得表名 LPCTSTR AsDescTable(CString& sDescTable, LPCTSTR pszVarDesc, const CMapStringToString& mapVarToValue); // 转换数据为指定的描述字符串 LPCTSTR AsItemDesc(CString& sDesc, LPCTSTR pszData, LPCTSTR pszVarDesc, const CMapStringToString& mapVarToValue); // 转换描述为指定的数据字符串 LPCTSTR ByItemDesc(CString& sData, LPCTSTR pszDesc, LPCTSTR pszVarDesc, const CMapStringToString& mapVarToValue); // 显示指定类型的属性和约束数据 void OnShowClassData(HTREEITEM hItem, BOOL bEdit); // 显示指定类型的类属性 void OnShowClassAttrItems(HTREEITEM hItem, BOOL bEdit); // 显示指定类的属性 void OnShowAttributeItems(ULONG lId, BOOL bEdit); // 显示指定类属性的属性 void OnShowAttributeAttrItems(CPropertyItemTab* pTab, ULONG lId, BOOL bEdit); // 显示分类约束数据条目 void OnShowRuleData(HTREEITEM hItem, BOOL bEdit); // 显示指定类约束的属性 void OnShowRuleAttrItems(CPropertyItemTab* pTab, ULONG lId, BOOL bEdit); // 显示约束参数表达式 void OnShowExpression(CPropertyItemTab* pTab, ULONG lId, BOOL bEdit); void OnShowExpression(CPropertyItemTab* pTab, CMapStringToString& mapVarTypeToValue, BOOL bEdit); // 重新调整控件 void OnRelayout(); // 取得分隔区间,参数为长度为3的数组 void GetSepRect(CRect* pRecSep); protected: // 当前数据是否被修改 BOOL m_bPartModified; // 当前分类数据 KTParamClass m_cCurClass; // 类型数操作工具条 CToolBar m_wndTBarClass; // 属性列表操作工具条 CToolBar m_wndTBarAttr; // 图标列表 CImageList m_imglstIcon; // 最小窗口尺寸 CSize m_szMin; // 鼠标左键按下标识 BOOL m_bMouseDown; // 上一个鼠标位置点 CPoint m_ptLast; // 当前点击的分隔条位置 int m_iCurSep; // 是否按了ESCAPE键 BOOL m_bEscape; // 拷贝的分类 HTREEITEM m_hCopyClass; protected: //{{AFX_DATA(CDlgParamDefine) enum { IDD = IDD_PARAMDEFINE }; CTreeCtrl m_wndTreeClass; CStatic m_wndStcPreview; CPropertyListBox m_wndLstAttribute; CPropertyListBox m_wndLstRule; //}}AFX_DATA //{{AFX_VIRTUAL(CDlgParamDefine) public: virtual BOOL Create(CWnd* pParentWnd); virtual BOOL PreTranslateMessage(MSG* pMsg); protected: virtual void DoDataExchange(CDataExchange* pDX); //}}AFX_VIRTUAL protected: //{{AFX_MSG(CDlgParamDefine) virtual BOOL OnInitDialog(); afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg void OnSizing(UINT fwSide, LPRECT pRect); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnLButtonUp(UINT nFlags, CPoint point); afx_msg void OnMouseMove(UINT nFlags, CPoint point); afx_msg void OnCaptureChanged(CWnd *pWnd); afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); afx_msg void OnClassNew(); afx_msg void OnClassDelete(); afx_msg void OnClassRename(); afx_msg void OnBeginLabelEditTreeClass(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnEndLabelEditTreeClass(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnAttrNew(); afx_msg void OnAttrDelete(); afx_msg void OnAttrRename(); afx_msg void OnRuleNew(); afx_msg void OnRuleSelect(); afx_msg void OnRuleDelete(); afx_msg void OnSelchangingTreeClass(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnDestroy(); afx_msg void OnAttrUp(); afx_msg void OnAttrDown(); afx_msg void OnRuleUp(); afx_msg void OnRuleDown(); afx_msg void OnClassSave(); virtual void OnCancel(); afx_msg void OnClassTest(); afx_msg void OnClassCopy(); afx_msg void OnAttrPaste(); afx_msg void OnRulePaste(); afx_msg void OnClassImport(); //}}AFX_MSG afx_msg LRESULT OnPropListBoxNotify(WPARAM wParam, LPARAM lParam); afx_msg LRESULT OnSetMessageString(WPARAM wParam, LPARAM lParam); afx_msg BOOL OnToolTipNotify(UINT id, NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu); afx_msg void OnExitMenuLoop(BOOL bIsTrackPopupMenu); DECLARE_MESSAGE_MAP() }; //{{AFX_INSERT_LOCATION}} #endif // !defined(__DLGPARAMDEFINE_H__)