C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Урок 20. Метод с возвращаемым значением / Библиотека ATL / Visual C++

Visual C++. ATL
Урок 20. Метод с возвращаемым значением

До этого мы рассматривали с вами методы без возвращаемого значения. Вернее сказать, они не возвращали значения в клиенте при использовании нашего компонента. Внутри же кода C++ они возвращали значение типа HRESULT - т. н. успех или не успех вызова этого метода.

Как же нам сделать так, что бы некоторый метод возвращал значение (при вызове этого метода в клиенте, разумеется)? Очень просто - нам надо объявить последний параметр для этого метода во-первых, с атрибутами [out, retval] и во-вторых, этот параметр должен быть указателем (приблизительно как в методе get_... для получения значения свойства). Таким образом в C++ коде у нашего метода будет на один параметр больше, чем в клиенте.

Практически это делаем так - в окне Add Method to Interface в текстовом поле Parameters вводим что-то вроде "[out, retval] short * res" для последнего метода:

Окно Add Method to Interface

И еще раз обратите внимание, что параметр с атрибутами [out, retval] должен быть последним параметром в методе. Т. е. если у нас есть несколько параметров, то наш метод должен выглядеть приблизительно так в idl-файле:

[id(2), helpstring("method MyMethod2")]
    HRESULT MyMethod2(short a, short b, [out, retval] short * res);

В клиенте же для приведенного метода будет только два параметра - т. е. на один меньше.