Написание ActiveX для 1C на C++
От: Ivan093 Россия  
Дата: 03.07.07 10:36
Оценка:
Добрый день!
Пишу activex компоненту на билдере 6 с использованием ATL. Использоваться компонента будет в 1С 8.0.
Возникла необходимость передачи структур и массивов структур в 1С.
Т.к. у 1С ограниченная поддержка COM, решил такие массивы возвращать как COM-объект, у которого будут свои свойства и методы, например getValue(0), moveNext() и т.д.
Вот тут то мне и непонятно как создать, заполнить и вернуть в качестве результата новый COM-объект.
Описываю свою реализацию:
1. Есть основной интерфейс (созданный визардом) Iface1 с parent IDispatch. У этого интерфейса есть свои
свойства и методы. Есть метод Method1(), который и должен возвращать новый COM-объект:

[
id(0x00000007)
]
HRESULT _stdcall Method1([out, retval] IUnknown ** Val);

2. Есть добавочный интерфейс Iface2 (для нового COM-объекта) с parent IDispatch.
У него есть два свойства BSTR Param1 и int Param2.

3. Есть код для Method1, созданный визардом:

STDMETHODIMP Iface1Impl::Method1(LPUNKNOWN* Info)
{
try
{

}
catch(Exception &e)
{
return Error(e.Message.c_str(), IID_Iface1);
}
return S_OK;
};

Можно мне, непонятливому, разжевать по шагам, что написать между try { }, чтобы создать новый COM-объект, заполнить свойства Param1 и Param2, и вернуть этот объект клиенту?
Совсем хорошо будет, если будет в качестве примера несколько строчек кода
Почитал доки, но не понял как это сделать...

17.07.07 13:31: Перенесено модератором из 'C/C++' — Кодт
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.