// Simple.cpp : Implementation of CSimple
#include "stdafx.h"
#include "CATLSmpl.h"
#include "Simple.h"
/////////////////////////////////////////////////////////////////////////////
//
// Created by the ATL 1.1 COM Wizard
STDMETHODIMP CSimple::InterfaceSupportsErrorInfo(REFIID riid)
{
static const IID* arr[] =
{
&IID_ISimple,
};
for (int i=0;i<sizeof(arr)/sizeof(arr[0]);i++)
{
if (InlineIsEqualGUID(*arr[i],riid))
return S_OK;
}
return S_FALSE;
}
//Ctor
CSimple::CSimple()
: m_bstrMyProperty(OLESTR("C++ ATL Simple Component"))
{}
//Put function for myProperty
STDMETHODIMP CSimple::put_myProperty(BSTR bstrInValue)
{
if (bstrInValue == NULL)
return E_POINTER;
m_bstrMyProperty = bstrInValue;
return S_OK;
}
//Get function for myProperty
STDMETHODIMP CSimple::get_myProperty(BSTR* pbstrOutValue)
{
if (pbstrOutValue == NULL)
return E_POINTER;
// Get Value from Property
*pbstrOutValue = m_bstrMyProperty.Copy();
return S_OK;
}
//Basic Method to convert a string to uppercase
STDMETHODIMP CSimple::myMethod(BSTR bstrIn, BSTR* pbstrOut)
{
if (bstrIn == NULL || pbstrOut == NULL)
return E_POINTER;
// Create a temporary CComBSTR
CComBSTR bstrTemp(bstrIn);
if (!bstrTemp)
return E_OUTOFMEMORY;
// Make string uppercase
wcsupr(bstrTemp);
// Return m_str member of bstrTemp
*pbstrOut = bstrTemp.Detach();
return S_OK;
}