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