ATL: я хочу создать кокласс, который я могу использовать в качестве параметра для метода в моем классе. Почему я не могу заставить это работать? - PullRequest
0 голосов
/ 30 марта 2009

Я создал COM-объект, используя ATL. Я хочу создать новый объект, который можно вернуть из метода и передать в качестве параметра. Я создал кокласс, но не могу понять, как добавить метод, который будет принимать его в качестве параметра.

Ошибка, которую я получаю: MIDL2025: синтаксическая ошибка: ожидается спецификация типа рядом с "IgBrush". Я использую Visual Studio 2008.

Когда я добавил перечисление, я вспомнил, как немного поиграл с IDL, и в конце концов получил его, чтобы принять перечисление в качестве параметра. Нет такой удачи с коклассом.

Из сгенерированного по умолчанию кода, который предоставляет мастер ATL, какие шаги необходимо выполнить, чтобы заставить его работать? (т. е. куда мне двигаться и почему?)

1 Ответ

1 голос
/ 30 марта 2009

Будет полезно, если вы установите IDL, который используете.

Чтобы использовать тип в MIDL, вы должны сначала объявить его.

interface IMyFactory:IDispatch
{
  ...
};

interface IMyObject:IDispatch
{
  HRESULT SetFactory([in] IMyFactory * state);
}

Но я бы рекомендовал передать эти параметры, такие как IUnknown * или IDispach * (если они подходящие), тогда последний ресурс будет использовать VOID * в качестве параметров.

...