![]() |
От: |
Vi2
|
http://www.adem.ru |
Дата: | 11.04.03 11:47 | ||
Оценка: | 78 (5) |
ДН>Объясните пожалуйста, зачем приходится в IDL кроме указания у параметра метода аттрибута [out] еще добавлять и [retval]? Почему одного из них недостаточно?
Для того, чтобы позволить для некоторых (в том числе и С++) языков некоторый более естественный синтаксис операторов присваивания или вызова функции. А также для того, чтобы отличать вызов функции от вызова подпрограммы.A function that has the propget attribute should also have, as its last parameter, a pointer type with the [out] and [retval] attributes. If the last parameter does not have the [out, retval] attributes, the return value of the function is treated as an [out, retval] parameter. For example, a function with the prototype
is treated as[propget] short MyFunction([in] long aLongValue);
[propget] HRESULT MyFunction([in] long aLongValue, [out,retval] short *outValue);
Информация = p.СделайЭтоИВерниОпределеннуюИнформацию(Параметр1, ..., ПараметрN) ' VB сиснтаксис
или
Информация = p->СделайЭтоИВерниОпределеннуюИнформацию(Параметр1, ..., ПараметрN)
p.СделайЭтоИВерниОпределеннуюИнформацию(Параметр1, ..., ПараметрN); // не VB сиснтаксис
или
p->СделайЭтоИВерниОпределеннуюИнформацию(Параметр1, ..., ПараметрN);
[propget] HRESULT MyFunction([out,retval] short *outValue);
чем
[propget] HRESULT MyFunction([out,retval] VARIANT *outShortValue);