Поделиться через


CComCoClass::CreateInstance

Используйте эти функции CreateInstance чтобы создать экземпляр com-объекта и получения указателя интерфейса без использования API модели COM.

template <class Q> 
static HRESULT CreateInstance( 
   Q** pp  
); 
template <class Q> 
static HRESULT CreateInstance( 
   IUnknown* punkOuter, 
   Q** pp  
);

Параметры

  • Q
    Интерфейс модели COM, который должен быть возвращен посредством pp.

  • punkOuter
    [in] внешний неизвестен или управление неизвестно пользователем агрегате.

  • pp
    [out] Адрес переменной указателя, которая получает указатель интерфейса, если запрошенный создание завершается успешно.

Возвращаемое значение

Стандартное значение HRESULT. См. раздел CoCreateInstance в Windows SDK описание возможных возвращаемых значений.

Заметки

Используйте первую перегрузку этой функции для конечного создания объекта; используйте второй перегруженный метод, если требуется статистическая обработка, созданными объект.

Класс, реализующий необходимые библиотеки ATL com-объекты (то есть класс, используемый в качестве первого параметра шаблона в CComCoClass) должен находиться в том же проекте, что и вызывающий код. Создать COM-объект осуществляется фабрикой класса зарегистрированной для данного класса библиотеки ATL.

Эти функции полезны для создания объект, что предотвращали в ней создаваемыми с помощью макроса OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO. Они также полезны в тех случаях, когда необходимо избежать api-интерфейс COM для повышения эффективности.

Обратите внимание, что Q должен иметь идентификатор IID интерфейса, связанные с ним, который можно получить с помощью оператора __uuidof.

Пример

В следующем примере CDocument библиотеки ATL мастер- созданный класс, производный от CComCoClass, реализующий интерфейс IDocument. Класс зарегистрировать в сопоставлении объекта с макросом OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO поэтому клиенты не могут создавать экземпляры документа с помощью CoCreateInstance. Компонентный класс, предоставляющий метод CApplication на одном из своих собственных интерфейсов модели COM для создания экземпляров класса документа. Код под выставками как простой его создания экземпляров документа классифицирует с помощью элемента CreateInstance, наследуемый от базового класса CComCoClass.

STDMETHODIMP CMyApp::CreateDocument( /* [out, retval] */ IDocument** ppDoc)
{
   *ppDoc = NULL;
   return CMyDoc::CreateInstance(ppDoc);
}

Требования

Header: atlcom.h

См. также

Ссылки

CComCoClass Class