arist |
Отправлено: 23.01.2005, 18:42 |
|
Не зарегистрирован
|
Нужно написать COM-сервер с помощью ATL.
Он должен реализовать интерфейсы IPersistFolder, IShellFolder, IClassFactory и т.д.
Первые два из Windows Shell с ними вроде всё в порядке,
а вот как реализуется IClassFactory?
Делая как написано в MSDN, IClassFactory, при просмотре через OLE/COM Object Viewer, не появляется.
Я понимаю MSDN так:
Нужно создать объект через Add Class Wizard, например, ATL Simple Object.
Он уже порождён от CComCoClass, а это и есть реализация IClassFactory.
Ну и ещё в объявлении моего класса добавляем макрос DECLARE_CLASSFACTORY().
Получается примерно следующее:
class ATL_NO_VTABLE CAristArchMain :
public CComObjectRootEx<CComSingleThreadModel>, //насколько я понимаю это IUnknown
public CComCoClass<CAristArchMain, &CLSID_AristArchMain>, //а это IClassFactory
public IAristArchMain,
public IPersistFolder //добавил руками
{
public:
//...
DECLARE_CLASSFACTORY() //добавил руками
//...
BEGIN_COM_MAP(CAristArchMain)
COM_INTERFACE_ENTRY(IAristArchMain)
COM_INTERFACE_ENTRY(IPersist) //тоже руками (от него порождён IPersistFolder)
COM_INTERFACE_ENTRY(IPersistFolder) //тоже руками
END_COM_MAP()
//...
|
|
|