Помогите!!!!!!!!!!!!!!!!!!
Не могу вызвать событие COM объекта (DLL-ки) в пользовательское приложение через функцию WithEvents.
- Код: Выделить всё
Public Delegate Sub INVARMAORDEREventHandler(ByRef ORDERNUM() As Integer, ByRef ORDERDEN() As Integer, ByRef RESIDUALDISPERSION(,) As Double, ByRef IQ As Integer, ByRef IP As Integer)
<ComClass(clsDSA.ClassId, clsDSA.InterfaceId, clsDSA.EventsId), DefaultEvent("INVARMAORDER")> _
Public Class clsDSA
#Region "COM GUIDs"
Public Const ClassId As String = "3F0CD705-094F-4afc-903D-98E37094C959"
Public Const InterfaceId As String = "63A26FF1-226F-4f8f-A364-3840C849F439"
Public Const EventsId As String = "17B0F573-1F3D-4bb2-A5A9-881BE28FF437"
#End Region
#Region "Public"
Public Sub New()
MyBase.New()
AddHandler INVARMAORDER, AddressOf OnChanged
End Sub
<ComRegisterFunction()> Public Shared Sub OnRegistration(ByVal T As Type)
MsgBox("Библиотека " & T.FullName & " зарегистрирована!!!")
End Sub
Public Event INVARMAORDER As INVARMAORDEREventHandler
Protected Overridable Sub OnChanged(ByRef ORDERNUM As Integer(), ByRef ORDERDEN As Integer(), ByRef RESIDUALDISPERSION As Double(,), ByRef IQ As Integer, ByRef IP As Integer)
RaiseEvent INVARMAORDER(ORDERNUM, ORDERDEN, RESIDUALDISPERSION, IQ, IP)
End Sub
Public Sub INVARMA(ByRef H As Complex(), ByRef W As Double(), ByRef IQ As Integer, ByRef IP As Integer, ByRef NUM As Complex(), ByRef DEN As Complex(), Optional ByVal Wt As Object = Nothing, Optional ByVal MaxIter As Integer = 0, Optional ByVal TOL As Double = 0.01, Optional ByVal ComplexFlag As Boolean = False, Optional ByVal ChoiceOrder As Boolean = False)
...
OnChanged(ORDERNUM, ORDERDEN, RD, IQ, IP)
...
End Sub
#End Region
End Class
В приложении на VB6 возникает ошибка о переполнении стека.
Спасибо.