Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Этот класс реализует интерфейс IUnknown для агрегированного объекта. По определению агрегированный объект содержится в внешнем объекте. Класс CComAggObject аналогичен классу CComObject, за исключением того, что он предоставляет интерфейс, который напрямую доступен внешним клиентам.
Синтаксис
template<class contained>
class CComAggObject : public IUnknown,
public CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>
Параметры
содержащийся
Класс, производный от CComObjectRoot или CComObjectRootEx, а также от любых других интерфейсов, которые требуется поддерживать в объекте.
Участники
Открытые конструкторы
| Имя | Описание |
|---|---|
| CComAggObject::CComAggObject | Конструктор. |
| CComAggObject::~CComAggObject | Деструктор |
Открытые методы
| Имя | Описание |
|---|---|
| CComAggObject::AddRef | Увеличивает количество ссылок в агрегированном объекте. |
| CComAggObject::CreateInstance | Эта статическую функцию позволяет создать новый объект CComAggObject< > contained без дополнительных расходов CoCreateInstance. |
| CComAggObject::FinalConstruct | Выполняет окончательную инициализацию m_contained. |
| CComAggObject::FinalRelease | Выполняет окончательное m_containedуничтожение . |
| CComAggObject::QueryInterface | Извлекает указатель на запрошенный интерфейс. |
| CComAggObject::Release | Уменьшает количество ссылок в агрегированном объекте. |
Открытые члены данных
| Имя | Описание |
|---|---|
| CComAggObject::m_contained | Делегирует вызовы IUnknown внешнего неизвестного. |
Замечания
CComAggObjectреализует IUnknown для агрегированного объекта. CComAggObject имеет собственный IUnknown интерфейс, отделенный от интерфейса внешнего объекта IUnknown , и поддерживает собственное число ссылок.
Дополнительные сведения об агрегации см. в статье "Основы COM-объектов ATL".
Иерархия наследования
CComObjectRootBase
IUnknown
CComAggObject
Требования
Заголовок: atlcom.h
CComAggObject::AddRef
Увеличивает количество ссылок в агрегированном объекте.
STDMETHOD_(ULONG, AddRef)();
Возвращаемое значение
Значение, которое может быть полезно для диагностика или тестирования.
CComAggObject::CComAggObject
Конструктор.
CComAggObject(void* pv);
Параметры
pv
[in] Внешний неизвестный.
Замечания
Инициализирует элемент CComContainedObjectm_contained и увеличивает счетчик блокировок модуля.
Деструктор уменьшает число блокировок модуля.
CComAggObject::~CComAggObject
Деструктор
~CComAggObject();
Замечания
Освобождает все выделенные ресурсы, вызывает FinalRelease и уменьшает число блокировок модуля.
CComAggObject::CreateInstance
Эта статическую функцию позволяет создать новый объект CComAggObject<>contained без дополнительных расходов CoCreateInstance.
static HRESULT WINAPI CreateInstance(
LPUNKNOWN pUnkOuter,
CComAggObject<contained>** pp);
Параметры
pp
[out] Указатель на содержащийся> указатель на CComAggObject<. Если CreateInstance ошибка не выполнена, для pp задано значение NULL.
Возвращаемое значение
Стандартное значение HRESULT.
Замечания
Возвращенный объект имеет число ссылок нулю, поэтому вызов AddRef немедленно используйте Release для освобождения ссылки на указатель объекта после завершения.
Если вам не нужен прямой доступ к объекту, но по-прежнему требуется создать новый объект без дополнительных CoCreateInstanceзатрат, используйте CComCoClass::CreateInstance .
CComAggObject::FinalConstruct
Вызывается во время последних этапов построения объекта, этот метод выполняет любую окончательную инициализацию элемента m_contained .
HRESULT FinalConstruct();
Возвращаемое значение
Стандартное значение HRESULT.
CComAggObject::FinalRelease
Вызывается во время уничтожения объекта, этот метод освобождает элемент m_contained .
void FinalRelease();
CComAggObject::m_contained
Объект CComContainedObject, производный от класса.
CComContainedObject<contained> m_contained;
Параметры
содержащийся
[in] Класс, производный от CComObjectRoot или CComObjectRootEx, а также от любых других интерфейсов, которые требуется поддерживать в объекте.
Замечания
Все IUnknown вызовы m_contained делегируются внешнему неизвестному.
CComAggObject::QueryInterface
Извлекает указатель на запрошенный интерфейс.
STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);
template <class Q>
HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp);
Параметры
iid
[in] Идентификатор запрашиваемого интерфейса.
ppvObject
[out] Указатель на указатель интерфейса, определяемый iid. Если объект не поддерживает этот интерфейс, ppvObject имеет значение NULL.
pp
[out] Указатель на указатель интерфейса, определяемый по типу Q. Если объект не поддерживает этот интерфейс, для pp задано значение NULL.
Возвращаемое значение
Стандартное значение HRESULT.
Замечания
Если запрошенный интерфейс имеет значение IUnknown, QueryInterface возвращает указатель на собственный IUnknown агрегированный объект и увеличивает число ссылок. В противном случае этот метод запрашивает интерфейс через CComContainedObject член, m_contained.
CComAggObject::Release
Уменьшает количество ссылок в агрегированном объекте.
STDMETHOD_(ULONG, Release)();
Возвращаемое значение
В отладочных сборках Release возвращает значение, которое может быть полезно для диагностика или тестирования. В сборках, отличных от отладки, Release всегда возвращается значение 0.
См. также
Класс CComObject
Класс CComPolyObject
DECLARE_AGGREGATABLE
DECLARE_ONLY_AGGREGATABLE
DECLARE_NOT_AGGREGATABLE
Общие сведения о классе