| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- #include "StdAfx.h"
- #include "CellAUTOCREATE.h"
- #define CELL_LIST_HEAD CCellAUTOCREATE::ms_pHead
- CCellAUTOCREATE* CCellAUTOCREATE::ms_pHead = NULL;
- CCellAUTOCREATE::CCellAUTOCREATE(const CString& a_Name, pfnCreateCell a_fn) : m_Name(a_Name), m_pfnCreate(a_fn)
- {
- __setList();
- }
- CCellAUTOCREATE::~CCellAUTOCREATE(void)
- {
- }
- /*****************************************************************
- **【函数名称】 __setList
- **【函数功能】 设置动态创建链条
- **【参数】
- **【返回值】
- ****************************************************************/
- void CCellAUTOCREATE::__setList( void )
- {
- if(CELL_LIST_HEAD == NULL)
- {
- CELL_LIST_HEAD = this;
- }
- else
- {
- CCellAUTOCREATE* pTemp = CELL_LIST_HEAD;
- while(pTemp->m_pNext != NULL)
- pTemp = pTemp->m_pNext;
- pTemp->m_pNext = this;
- }
- m_pNext = NULL;
- }
- /*****************************************************************
- **【函数名称】 __createCell
- **【函数功能】 创建节点对象
- **【参数】
- **【返回值】 节点对象
- ****************************************************************/
- CCellBase* CCellAUTOCREATE::__createCell( void )
- {
- CCellBase* pCell = NULL;
- if(m_pfnCreate != NULL)
- pCell = (*m_pfnCreate)();
- return pCell;
- }
- /*****************************************************************
- **【函数名称】 fromName
- **【函数功能】 根据节点名字查找节点动态创建对象
- **【参数】 a_Name: 节点名字
- **【返回值】 动态创建对象
- ****************************************************************/
- CCellAUTOCREATE* CCellAUTOCREATE::fromName( const CString& a_Name )
- {
- CCellAUTOCREATE* pTemp = NULL;
- for(pTemp = CELL_LIST_HEAD; pTemp != NULL; pTemp = pTemp->m_pNext)
- {
- if(pTemp->m_Name == a_Name)
- return pTemp;
- }
- return NULL;
- }
- /*****************************************************************
- **【函数名称】 createCell
- **【函数功能】 根据节点名字生成对应节点对象
- **【参数】 a_Name: 节点名字
- **【返回值】 节点对象
- ****************************************************************/
- CCellBase* CCellAUTOCREATE::createCell( const CString& a_Name )
- {
- CCellAUTOCREATE* pTemp = fromName(a_Name);
- if(pTemp != NULL)
- return pTemp->__createCell();
- else
- return NULL;
- }
|