Шаг 178.
Среда программирования Visual C++.
Анализ кода ATL COM-компонента. Реализация методов компонента

    На этом шаге мы рассмотрим особенности реализации методов компонента.

    Файл Encoder.cpp содержит тело метода EncodeString(), созданного на 176 шаге.

#include "stdafx.h"
#include "EncodeServer.h"
#include "Encoder.h"

STDMETHODIMP CEncoder::EncodeString(const BSTR instring, BSTR *outstring)
{
   // TODO: Add your implementation code here
   BSTR tempstring = ::SysAllocString(instring);
   wcscpy(tempstring, instring);
   for(UINT i = 0; i < ::SysStringLen(tempstring); i++) 
      tempstring[i] += m_Key;
   *outstring = ::SysAllocString(tempstring); 
   ::SysFreeString(tempstring);

   return S_OK;
}

    В этом коде есть несколько характерных особенностей, присущих технологии СОМ - они автоматически учтены в методе мастером Add Method to Interface Wizard.

    В качестве типа возвращаемых данных в этом методе указан макрос STDMETHODIMP. Он находится в заголовочном файле BASETYPS.H:

    RESULT export stdcall

    Указав, что возвращаемое значение должно относиться к типу HRESULT, мы вынудили Add Method to Interface Wizard автоматически вставить строку кода, возвращающую константу S_OK. Это - встоенная константа, соответствующая формату структуры данных HRESULT и содержащая код успешного возврата.

    На следующем шаге мы рассмотрим функции глобальной точки входа.




Предыдущий шаг Содержание Следующий шаг