/
MadDAD
/
alterplast
Обзор
Документация
Войти
/
MadDAD
/
alterplast
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
vis1cpp/CoClasses.cpp
106 строк
2 KB
trdm
24 мар 2017, 12:42
24 мар 2017, 12:42
988c847
Код
Авторство
О чём код?
// CoClasses.cpp : Implementation of CCoClasses #include "stdafx.h" #include "Vis1cpp.h" #include "Vis1cpp_my.h" #include <functional> #include "CoClasses.h" // CComObject<CCoClasses>* CCoClasses::static_pCoClass = NULL; // IClassesPtr CCoClasses::static_pInterface; CComImplPair<CCoClasses, IClasses, &IID_IClasses> CCoClasses::static_ComPair; ///////////////////////////////////////////////////////////////////////////// // CCoClasses CCoClasses::CCoClasses() { } CCoClasses::~CCoClasses() { } STDMETHODIMP CCoClasses::get_Count(long *pVal) { AFX_MANAGE_STATE(AfxGetStaticModuleState()) // TODO: Add your implementation code here *pVal = Count(); return S_OK; } STDMETHODIMP CCoClasses::get_Item(VARIANT varSrcName, IClassInfo **pVal) { //AFX_MANAGE_STATE(AfxGetStaticModuleState()) // TODO: Add your implementation code here return GetItem(&varSrcName, pVal); } void CCoClasses::Init() { // if (!static_pCoClass){ // CComObject<CCoClasses>::CreateInstance(&static_pCoClass); // assert(static_pCoClass); // // static_pCoClass->AddRef(); // if (FAILED( static_pCoClass->QueryInterface(IID_IClasses, reinterpret_cast<void**>(&static_pInterface)) )){ // MessageBox("%s - ������ ��������� ���������� %s", "CCoClasses::Init", "IID_IClasses"); // } // assert(static_pInterface); // static_pCoClass->Release(); // } if (!static_ComPair){ if ( !static_ComPair.CreateInstance() ) MessageBox("%s - ������ ��������� ���������� %s", "CCoClasses::Init", "IID_IClasses"); } } void CCoClasses::Destroy() { Get()->RemoveAll(); //static_pInterface.Release(); static_ComPair.Release(); } void CCoClasses::IfNeeded_FillAllElements() { if (IsEmpty()) FillAllElements(); } void CCoClasses::FillAllElements() { RemoveAll(); CClassInfo::ForEachClassInfo( &CCoClasses::Static_AddEachElement ); } // TODO ������������� ������ ����� Static_AddEachElement - � ������� mem_fun, bind � �.�. - ���� ���-�� �� ���������� void CCoClasses::Static_AddEachElement( const CClassInfo::CPtr& pClassInfo ) { Get()->Add(pClassInfo); } STDMETHODIMP CCoClasses::get__NewEnum(LPUNKNOWN *pVal) { return GetNewEnum(pVal); } STDMETHODIMP CCoClasses::FindByPath(VARIANT varSrcPath, IClassInfo **pElem) { return FindItemByPath(varSrcPath, pElem); } void CCoClasses::OnAdd( const CClassInfo::CPtr& pElem ) { } void CCoClasses::OnRemoveAll() { }