Добрый день. Создаю в ATL заготовку для СОМ-объекта. В idl-файле создаю свой интерфейс, который наследуется от интерфейса IDispatch. При создании методов интерфейса тип возвращаемого значения метода по умолчанию становится HRESULT. Как мне сделать интерфейс средствами ATL, чтоб тип возвращаемого значения метода был boolean?
Приветствую, Muxeu.
Вы писали:
M>Добрый день. Создаю в ATL заготовку для СОМ-объекта. В idl-файле создаю свой интерфейс, который наследуется от интерфейса IDispatch. При создании методов интерфейса тип возвращаемого значения метода по умолчанию становится HRESULT. Как мне сделать интерфейс средствами ATL, чтоб тип возвращаемого значения метода был boolean?
Только вручную редактируя idl-файл.
А вообще, так сделано неспроста. Если возвращаемое значение не является HRESULT-ом, Ваш компонент
перестает быть совместимым с Automation (и все заморочки с IDispatch становятся бессмысленными).
Так что возвращать результат из метода лучше стандартным способом, через [out, retval],
а HRESULT оставить для индикации статуса, как и положено в COM.
Здравствуйте, Muxeu, Вы писали:
M>Создаю в ATL заготовку для СОМ-объекта. В idl-файле создаю свой интерфейс, который наследуется от интерфейса IDispatch. При создании методов интерфейса тип возвращаемого значения метода по умолчанию становится HRESULT. Как мне сделать интерфейс средствами ATL, чтоб тип возвращаемого значения метода был boolean?
По правилам СОМа, каждый метод интерфейса возвращает HRESULT как значение функции. Если этот метод также возвращает значение(я), то они возвращаются через параметры, из которых только один должен иметь атрибут [out, retval], а все другие — атрибут [out].
AFAIR, параметры методов при создании методов не автоматизируются. Нужно писать ручками.
Здравствуйте, Vi2, Вы писали:
Vi2>Здравствуйте, Muxeu, Вы писали:
M>>Создаю в ATL заготовку для СОМ-объекта. В idl-файле создаю свой интерфейс, который наследуется от интерфейса IDispatch. При создании методов интерфейса тип возвращаемого значения метода по умолчанию становится HRESULT. Как мне сделать интерфейс средствами ATL, чтоб тип возвращаемого значения метода был boolean?
Vi2>По правилам СОМа, каждый метод интерфейса возвращает HRESULT как значение функции. Если этот метод также возвращает значение(я), то они возвращаются через параметры, из которых только один должен иметь атрибут [out, retval], а все другие — атрибут [out].
Vi2>AFAIR, параметры методов при создании методов не автоматизируются. Нужно писать ручками.