|
![]() |
#1 |
Участник
|
Цитата:
Значит есть у меня класс: class MyClass extends COM { public void f1() { Print("MyClass::f1"); } } дальше я строю какой то СОМ обж., и передаю ему инстанс на MyClass: void main() { COM srv = new COM("MyVBCOM"); srv.setcallback(new MyClass() ); } Где в setcallback происходит следующее: function setcallback (obj as Object) obj.f1 end function Значтит когда я не наследую класс MyClass от СОМ то все это падает на момент передачи Аксапта обьекта в метод СОМ, рантайм говорит что эта переменная не может передаваться в СОМ метод. Когда я наследую от СОМ, то передача происходит нормально, но в VB методе setcallback переменная obj имеет значение Nothing. Я так подозреваю что во время передачи в СОМ метод происходит у моего аксапта обьекта QueryInterface, и ни один интерфейс не находится, возвращается ноль. В COMVariant запаковать этот обьект тоже не получается, по логике вещей нужно инициализировать его как iDispatch, но метод этот принимает тип comInterface, кастинг не проходит. Видимо MyClass нужно заимплементировать СОМ интерфейс, чтобы QueryInterface вернул нармальное значение, а как это делается? Как объявить в Аксапте интерфейс, и еще в добавок ко всему СОМ, как имплементировать его в классе? Вопросы касаются обычного синтаксиса, видимо. |
|
![]() |
#2 |
Участник
|
Цитата:
|
|