Какова точная функция CoCreateInstance?

Я держал пари, что Вы не знали, что были функциональным программированием, когда Вы использовали:

  • Формулы Excel
  • Кварцевый Компоновщик
  • Логотип (графика с относительными командами) JavaScript
  • LINQ
  • SQL
  • Underscore.js (или Lodash), D3
13
задан 8 September 2009 в 13:40
поделиться

2 ответа

Вы можете думать о CoCreateInstance () как об интерфейсе к анонимному классу фабрики.

В ООП часто бывает разумно использовать фабричный шаблон, чтобы просто вызвать создание метод и получить указатель / ссылку на интерфейс, не зная, какой именно класс стоит за этим интерфейсом. Но вам все равно нужно знать, какой класс использовать в качестве фабрики. Вы также можете скрыть это, имея некоторую глобальную функцию, но вам все равно нужно знать ее имя и соглашения о вызовах.

CoCreateInstance идет дальше - он также скрывает фабричный класс и предоставляет общесистемную глобальную функцию. Все, что вы ему предоставляете, - это идентификатор класса, который является просто идентификатором GUID, и идентификатор интерфейса, который также является идентификатором GUID. Ты не

17
ответ дан 1 December 2019 в 22:58
поделиться

Проще говоря, он используется для создания экземпляра класса, который задается идентификатором GUID.

HRESULT CoCreateInstance(
  __in   REFCLSID rclsid,   // which class you want
  __in   LPUNKNOWN pUnkOuter, // used in aggregation
  __in   DWORD dwClsContext, // how/where you want the object created
  __in   REFIID riid, // which of the object's interfaces you want to use
  __out  LPVOID *ppv // where the pointer to the created object is placed
);

Для получения дополнительной информации прочтите документацию .

3
ответ дан 1 December 2019 в 22:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: