Я использую 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