Я использую COM-объект в VB6. У COM-объекта есть функция Foo (Long, Long, Rect). Rect - это структура, определенная в реализации COM-объекта. Мой код VB6 (кнопка в форме) выглядит следующим образом:
Private Sub btnTestCom_Click()
Set ComObj = CreateObject("ObjectName")
Dim rect As DISPLAY_RECT
rect.Left = 20
rect.Top = 20
ComObj.Foo(101, 0, rect) ' Error here
End Sub
В последней строке он выдает ошибку компиляции: «Только пользовательские типы, определенные в общедоступных объектных модулях, могут быть принудительно преобразованы в вариант или из него или переданы в функции с поздним связыванием».
Другие функции COM, не имеющие параметров определяемого пользователем типа, работают нормально.
Как мне решить эту проблему?
Спасибо.
Dim obj As New Foo
) намного лучше. Например, если вы используете позднее связывание, будет легче сделать правильный вызов этогоComObj.Foo
метода. IDE будет давать вам подсказки IntelliSense о типах параметров по мере ввода, а компилятор проверяет, правильно ли вы их указали. - person MarkJ   schedule 16.08.2011