Знатоки, требуется ваша помощь
проблема:
есть функция-событие в которую передается обьект ActiveX как аргумент —
OnMyFunc(var MyObject : IDispatch (пробовал и с OleVariant — это все равно
то же самое))
В эту функцию Visual Basic передает ссылку на некоторый ActiveX контрол —
procedure OnMyFunc(MyObject as Object)
Private Sub Mycontrol_OnMyFunc(ByVal MyObject As Object)
Set MyObject = SomeActiveXcontrol
End Sub
после того как ссылка на ActiveX передана в тело функции, из него надо
получить интерфейс на стандартнейший интерфейс — IOleObject. Но его
MyObject.QueryInterface(IOleObject, FOleObject) не берет, возвращая ошибку
No such interface supported
Экстрагирование из IDispatch интерфейса IUnknown и потом из него IoleObject — также не помогло.
Вопрос: что же на самом деле передает VB вот этой строкой Set MyObject =
SomeActiveXcontrol,
я так понимаю — ссылку на coclass, но как из него вытянуть этот интерфейс?
и как все таки выделить ссылку на IOleObject из того что передается?
Может быть надо заставлять каким-то образом VB передавать нужный интерфейс?