Статья: Оформление класса в виде COM объекта в C++
importlib("stdole2.tlb");
typedef enum
{
valueName1 = 0,
valueName2 = 1,
...
valueNameN = N
} EnumType;
..
}
Передавать в качестве параметров структуры тоже можно. Такие структуры называются UDT - User Defined Type. В IDL описываютсятак:
Typedef [uuid(C1D3A8C0-A4AA-11D0-819C-00A0C90FFFC3)] struct UDT
{
unsigned long X;
unsigned long Y;
BSTR pbstr;
} UDT;
Описывать параметры метода можно как VARIANT но тогда придется работать с интерфесом IRecordInfo или как UDT:
Do([in]UDT* pIn, [in,out] pOut);
Передать UDT в такой метод проще простого:
UDT some_data, some_returned_data;
p->Do(&some_data, some_returned_data);
Членами UDT могут быть другие UDT или oleautomation-совместимые типы.
У вы в VC нет автоматизации позволяющей создавать пользовательские типы поэтом у все придется делать ручками