class IDialogBuilderCallback // 创建自定义控件的接口 { public: virtual CControlUI* CreateControl(LPCTSTR pstrClass) = 0; }; class UILIB_API CDialogBuilder // 创建控件 { public: CControlUI* Create(LPCTSTR pstrXML, IDialogBuilderCallback* pCallback = NULL); // 创建控件, 若不是内置控件且创建自定义控件接口非空, 则调用接口创建 CControlUI* CreateFromResource(UINT nRes, IDialogBuilderCallback* pCallback = NULL); // 调用Create private: CControlUI* _Parse(CMarkupNode* parent, CControlUI* pParent = NULL); // Create通过调用此函数实现 CMarkup m_xml; IDialogBuilderCallback* m_pCallback; };