dispinterface
От: Eugene-32  
Дата: 13.08.02 12:47
Оценка:
Госпопа профессионалы !
Есть у меня вопрос на засыпку.Как можно при помощи ATL или MFC написать кокласс, который в IDL описан так


[
uuid(EA3E7A33-8F24-11D6-A6AC-00D0B7BEF71D),
nonextensible,
helpstring("ITestObj Interface")
]
dispinterface ITestObj
{
properties:
methods:
[id(1), helpstring("method M1")] HRESULT M1([in] BSTR parm);
};


[
uuid(EA3E7A34-8F24-11D6-A6AC-00D0B7BEF71D),
helpstring("_ITestObjEvents Interface")
]
dispinterface _ITestObjEvents
{
properties:
methods:

[id(1), helpstring("OnM1")] HRESULT OnM1(void);
};


[
uuid(EA3E7A32-8F24-11D6-A6AC-00D0B7BEF71D),
helpstring("TestObj Class")
]
coclass TestObj
{
[default] dispinterface ITestObj;
[default,source] dispinterface _ITestObjEvents;
};
Re: dispinterface
От: George Seryakov Россия  
Дата: 13.08.02 14:34
Оценка:
Здравствуйте Eugene-32, Вы писали:

E3>Есть у меня вопрос на засыпку.Как можно при помощи ATL или MFC написать кокласс, который в IDL описан так


E3>[
E3>   uuid(EA3E7A33-8F24-11D6-A6AC-00D0B7BEF71D),
E3>   nonextensible,
E3>   helpstring("ITestObj Interface")
E3>]
E3>dispinterface ITestObj
E3>{      
E3>properties:
E3>methods:
E3>   [id(1), helpstring("method M1")] HRESULT M1([in] BSTR parm);
E3>};
E3>


Может быть, и никак, то есть никак кроме как ручками. Но — на ATL можно написать дуальный интерфейс, который будет поддреживать твой дисп, ну, и события, само собой, можно добавить (это стандартно диспинтерфейс).
GS
Re[2]: dispinterface
От: Eugene-32  
Дата: 13.08.02 15:25
Оценка:
Здравствуйте George Seryakov, Вы писали:

....
....
GS>Может быть, и никак, то есть никак кроме как ручками. Но — на ATL можно написать дуальный интерфейс, который будет поддреживать твой дисп, ну, и события, само собой, можно добавить (это стандартно диспинтерфейс).


Спасибо за ответ. В принципе я так и сделал, то есть написал собственный IDispatchImpl<> —
враппер для dispinterface, просто хотелось узнать мнение других профи.
Re[3]: IDispatchImpl
От: Vi2 Удмуртия http://www.adem.ru
Дата: 14.08.02 02:45
Оценка:
Здравствуйте Eugene-32, Вы писали:

E3>Спасибо за ответ. В принципе я так и сделал, то есть написал собственный IDispatchImpl<> —

E3>враппер для dispinterface, просто хотелось узнать мнение других профи.

Можно использовать ATL IDispatchImpl и переопределить в коклассе только Invoke для вызова методов, причём можно взять пример реализацию из IDispEventSimpleImpl. Остальные методы IDispatchImpl неплохо справятся и сами.

Можно создать свой класс-обработчик от IDispEventSimpleImpl, переопределив в нём поведение IUnknown на работу в составе СОМ объекта.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re: dispinterface
От: Юнусов Булат Россия  
Дата: 14.08.02 03:42
Оценка:
Здравствуйте Eugene-32, Вы писали:

Попробуй Кометом
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.