/
MadDAD
/
alterplast
Обзор
Документация
Войти
/
MadDAD
/
alterplast
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
vis1cpp/CoDefFile.cpp
141 строка
4 KB
trdm
24 мар 2017, 12:42
24 мар 2017, 12:42
988c847
Код
Авторство
О чём код?
// CoDefFile.cpp : Implementation of CCoDefFile #include "stdafx.h" #include "Vis1cpp.h" #include "CoDefFile.h" // #include "CoClasses.h" ///////////////////////////////////////////////////////////////////////////// // CCoDefFile CCoDefFile::CCoDefFile() { m_Name = L""; m_Path = L""; } CCoDefFile::~CCoDefFile() { //Msg("CCoDefFile::~CCoDefFile %s"); } STDMETHODIMP CCoDefFile::get_Name(BSTR *pVal) { AFX_MANAGE_STATE(AfxGetStaticModuleState()) // TODO: Add your implementation code here if (m_pElem.expired()) return S_FALSE; *pVal = m_Name.Copy(); return S_OK; } STDMETHODIMP CCoDefFile::get_Path(BSTR *pVal) { AFX_MANAGE_STATE(AfxGetStaticModuleState()) // TODO: Add your implementation code here if (m_pElem.expired()) return S_FALSE; *pVal = m_Path.Copy(); return S_OK; } void CCoDefFile::Init(const CDefFileInfo::CPtr& pElem) { USES_CONVERSION; assert(pElem); m_pElem = pElem; m_Name = A2BSTR(pElem->GetDisplayName()); m_Path = A2BSTR(pElem->GetPath()); // TODO ������� InitChildClasses(pElem); } IDefFilePtr CCoDefFile::CreateInstance( const CDefFileInfo::CPtr& pElemInfo ) { assert(pElemInfo); CComObject<CCoDefFile>* pNewCoElem = NULL; CComObject<CCoDefFile>::CreateInstance(&pNewCoElem); assert(pNewCoElem); IDefFilePtr pInfo = NULL; pNewCoElem->AddRef(); if (FAILED( pNewCoElem->QueryInterface(IID_IDefFile, reinterpret_cast<void**>(&pInfo)) )){ MessageBox("%s - ������ ��������� ���������� %s", "CCoDefFile::CreateInstance", "IID_IDefFile"); } assert(pInfo); pNewCoElem->Release(); pNewCoElem->Init(pElemInfo); return pInfo; } // TODO ����� ������ ���������� ������ ICfgDoc �� ��������� STDMETHODIMP CCoDefFile::Open() { //AFX_MANAGE_STATE(AfxGetStaticModuleState()) // TODO: Add your implementation code here if (m_pElem.expired()) return S_FALSE; CDefFileInfo::CPtr pClassInfo( m_pElem.lock() ); assert(pClassInfo); pClassInfo->Open(); return S_OK; } static CInterfacesCollection<CClassInfo, IClassInfo, CCoClassInfo>* pStaticCoClassesCollection = NULL; void CCoDefFile::InitChildClasses( const CDefFileInfo::CPtr& pElem ) { //Msg("%s - %s", "CCoDefFile::InitChildClasses", pElem->GetDisplayName().operator LPCTSTR()); m_pIClassInfoCollection.Release(); assert(!m_pIClassInfoCollection); //if (!m_pCoClassesCollection){ CComObject<CCoClasses>::CreateInstance(&m_pCoClassesCollection); assert(m_pCoClassesCollection); m_pCoClassesCollection->AddRef(); if (FAILED( m_pCoClassesCollection->QueryInterface(IID_IClasses, reinterpret_cast<void**>(&m_pIClassInfoCollection)) )){ MessageBox("%s - ������ ��������� ���������� %s", "CCoClasses::FillAllElements", "IID_IClasses"); } assert(m_pIClassInfoCollection); m_pCoClassesCollection->Release(); //} assert(NULL != m_pCoClassesCollection); pStaticCoClassesCollection = m_pCoClassesCollection; pElem->ForEachChildClassInfoIntoDefFile( &CCoDefFile::Static_AddEachChildClassIntoDefFile ); } // TODO ������������� ������ ����� ForEachChildClassInfoIntoDefFile - � ������� mem_fun, bind � �.�. - ���� ���-�� �� ���������� void CCoDefFile::Static_AddEachChildClassIntoDefFile( const CClassInfo::CWeakPtr& pClassInfo ) { assert(NULL != pStaticCoClassesCollection); assert(!pClassInfo.expired()); pStaticCoClassesCollection->Add(pClassInfo.lock()); } STDMETHODIMP CCoDefFile::get_Classes(IClasses **pVal) { //AFX_MANAGE_STATE(AfxGetStaticModuleState()) // TODO: Add your implementation code here m_pIClassInfoCollection.CopyTo(pVal); return S_OK; }