1 Теперь мы должны добавить код, чтобы поддержать новый интерфейс. Сначала добавьте включающийся для dcapi.idl файла AsdkDesignCenterSamp .idl. Это включает, должен быть сделан после двух заданного по умолчанию импорта:
import "oaidl.idl";
import "ocidl.idl";
#include "dcapi.idl"
2 Открывают AsdkDcContent .h файл заголовка и изменяют{*заменяют*} образование для нового класса, чтобы включить CWINDOWIMPLBASE и IAcDcContentView следующим образом:
class ATL_NO_VTABLE CAsdkDcContent :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CAsdkDcContent, &CLSID_AsdkDcContent>,
public ISupportErrorInfo,
public IDispatchImpl<IAsdkDcContent, &IID_IAsdkDcContent,
&LIBID_ASDKDESIGNCENTERSAMPLib>,
public CWindowImplBase,
public IAcDcContentView
{
3 Теперь вводят интерфейсы объекта в карту COM, используя макрокоманду COM_INTERFACE_ENTRY:
BEGIN_COM_MAP(CAsdkDcContent)
COM_INTERFACE_ENTRY(IAsdkDcContent)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
COM_INTERFACE_ENTRY(IAcDcContentView)
END_COM_MAP()
4 Добавляют карту сообщения к классу:
BEGIN_MSG_MAP(CAsdkDcContent)
END_MSG_MAP()
5 Добавляют следующие объявления для интерфейса IAcDcContentView и некоторых сервисных методов:
public:
void OpenAndDisplayTextFile();
void OpenAndInsertTextFile();
CString OpenAndReadTextFile(DWORD& length);
STDMETHOD(Initialize)(/*[in]*/ VARIANT varBrowser);
STDMETHOD(SetImageLists)();
STDMETHOD(NavigatorNodeExpanding)(
/*[in]*/ VARIANT varhNode
, /*[in]*/ BSTR bstrFullPath);
STDMETHOD(NavigatorNodeCollapsing)(
/*[in]*/ VARIANT varhNode
, /*[in]*/ BSTR bstrFullPath);
STDMETHOD(NavigatorNodeClick)(
/*[in]*/ VARIANT varhNode
, /*[in, string]*/ BSTR bstrFullPath);
STDMETHOD(NavigatorMouseUp)(
/*[in]*/ VARIANT varhNode
, /*[in, string]*/ BSTR bstrFullPath
, /*[in]*/ VARIANT varX
, /*[in]*/ VARIANT varY);
STDMETHOD(PaletteItemClick)(/*[in]*/ BSTR bstrItemText);