Статья: Оформление класса в виде COM объекта в C++
{
if ((id.vt==VT_EMPTY)&&(Name.vt==VT_EMPTY))
{AddRec() ; return S_OK;}
if ((id.vt==VT_I4)&&(Name.vt==VT_EMPTY))
{AddRec(id.lVal) ; return S_OK;}
if ((id.vt==VT_I4)&&(Name.vt== VT_BSTR))
{AddRec(id.lVal, Name. bstrVal ) ; return S_OK;}
:
}
Этого вполне достаточно, но можно еще изменить объявление метода интерфейса в odl вот так
HRESULT Add(VARIANT [optional, in]id, [optional,in]VARIANT S);
это позволит вызывать метод , более красиво.
Пример на VB
MyObject.Add // Любой из вариантов должен работать
MyObject.Add 15
MyObject.Add 15, "Var"
Пользовательские типы данных
В сложном проекте полно собственных констант, структур, множеств используемых в качестве параметров .
#define IDL_NEXT 5
#define IDL_STOP 6
:
struct UDT
{
unsigned long X;
unsigned long Y;
BSTR pbstr;
} UDT;
:
typedef enum EnumType