Сущность технологии COM



         

Двунаправленные интерфейсные контракты - часть 7


class Surfboard : public ISurfboard, public IHazardousDevice, public ISharkBait, public IConnectionPointContainer { LONG m_cRef; // СОM reference count // счетчик ссылок СОМ // Surfboards don't support multiple outbound interfaces // of a given type, so it simply declares single pointers // of each possible type of callback interface // Surfboard не поддерживает несколько экспортируемых // интерфейсов заданного типа, поэтому он просто // объявляет одиночные указатели каждого возможного // типа интерфейса обратного вызова IShutdownNotify *m_pShutdownNotify; ISurfboardUser *m_pSurfer;

// to deal with identity relationship of IConnectionPoint, // define an IShutdownNotify-specific nested class + member // для работы с отношением тождественности // IConnectionPoint, определяем специфический для // IShutdownNotify вложенный класс+член

class XCPShutdownNotify : public IConnectionPoint { Surfboard *This(void); // use fixed offset // испопьзуем постоянное смещение

// IUnknown methods... // методы IUnknown...

// IConnectionPoint methods... // методы IConnectionPoint... } m_xcpShutdownNotify;

// define an ISurfboardUser-specific nested class + member // определяем специфический для IShutdownNotify вложенный класс+член

class XCPSurfboardUser : public IConnectionPoint { Surfboard *This(void); // use fixed offset // используем постоянное смещение

// IUnknown methods... // методы IUnknown...

// IConnectionPoint methods... // методы IConnectionPoint... } m_xcpSurfboardUser;

// IUnknown methods... // методы IUnknown...

// ISurfboard methods... // методы ISurfboard...

// IHazardousDevice methods... // методы IHazardousDevice...

// ISharkBait methods... // методы ISharkBait...

// IConnectionPointContainer methods... // методы IConnectionPointContainer... };

Следует указать, что экземпляры класса Surfboard будут иметь две отдельные реализации IConnectionPoint, одна из которых используется для присоединения интерфейсов обратного вызова IShutdownNotify, а вторая — для присоединения интерфейсов ISurfboardUser.


Содержание  Назад  Вперед