MiddleWares_YiHe 郑州颐和医院随访系统中间件

CellAUTOCREATE.h 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /*************************************************************************
  2. 【文件名】 CellAUTOCREATE.h
  3. 【功能模块和目的】 流程节点自动创建辅助类头文件
  4. 【开发者及日期】 郑石诺 2015/01/24
  5. 【版本】 V1.0.0
  6. 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
  7. 【更改记录】
  8. *************************************************************************/
  9. #pragma once
  10. class CCellBase;
  11. /*************************************************************************
  12. 【类名】 CCellAUTOCREATE
  13. 【功能】
  14. 【接口说明】 流程节点自动创建辅助类
  15. 【开发者及日期】 郑石诺 2015/01/24
  16. 【版本】 V1.0.0
  17. 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
  18. 【更改记录】
  19. *************************************************************************/
  20. class CCellAUTOCREATE
  21. {
  22. private:
  23. typedef CCellBase* (*pfnCreateCell)(void);
  24. public:
  25. CCellAUTOCREATE(const CString& a_Name, pfnCreateCell a_fn);
  26. ~CCellAUTOCREATE(void);
  27. private:
  28. friend class CCellBase;
  29. void __setList(void);
  30. CCellBase* __createCell(void);
  31. static CCellAUTOCREATE* fromName(const CString& a_Name);
  32. static CCellBase* createCell(const CString& a_Name);
  33. private:
  34. static CCellAUTOCREATE* ms_pHead;
  35. CCellAUTOCREATE* m_pNext;
  36. pfnCreateCell m_pfnCreate;
  37. CString m_Name;
  38. };
  39. #define DECLARE_CELL_AUTOCREATE \
  40. public: \
  41. static CCellAUTOCREATE ms_dynamicCreate; \
  42. static CCellBase* create(void); \
  43. #define IMPLEMENT_CELL_AUTOCREATE(classname, name) \
  44. CCellAUTOCREATE classname::ms_dynamicCreate(name, create); \
  45. CCellBase* classname::create(void) { return new classname; }