Анализ кода 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 и содержащая код
успешного возврата.

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



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий