Hallo Experten,
ich entwickele gerade COM-Objekte mittels der ATL, also in C++, die in Visual Basic (VB) genutzt werden sollen, und da stellen sich mir folgende Probleme:
Es sollen 2 COM-Objete implementiert werden, Customer und CustomerList, und zwar mit folg. Methoden/Properties bzw. Interfaces. Dazu ein VB-Code-Fragment:
Dim k As Customer
Set k = New Customer
Dim liste As CustomerList
Set liste = New CustomerList
k.CustomNo = 3
k.Name = "Rolf"
k.Address = "Bielefeld"
' kunde in die liste einfuegen
liste.addCustomer(k)
Wie man sieht hat das Objekt Customer die Properties ‚CustomNo, Name, Address‘ und CustomList die Methode ‚addCustomer(Customer)‘. Die Implementierung dieser Methode bereitet die Schwierigkeiten. In dem Objekt-Katalog stellt sich die Methode richtig dar als:
Sub CustumerList.addCustomer(newCustomer As Customer)
Leider erhalte ich beim Ausfuehren des VB-Programms eine Fehlermeldung:
‚Objekt unterstuetzt Methode nicht‘
welche sich auf den Aufruf von addCustomer bezieht. Anscheinend erkennt VB die Methode also nicht (obwohl sie sich im Katalog richtig darstellt). Wie muss ich also die Interface-Methode in C++ deklarieren, damit VB diese erkennt. Das zugehoerige (duale!) Interface in C++ heisst ICustomerList. Meine Implementierung hat folg. Deklarationen:
In der IDL:
[id(2), helpstring(„Methode addCustomer“)]
HRESULT addCustomer([in] ICustomer* newCustomer);
und die zugehoerige C+±COM-Klasse definiert dann
COM/C++:
STDMETHOD(addCustomer)(/*[in]*/ ICustomer* newCustomer);
Ich hoffe jemand kann mir helfen, bin schon voelligst verzweifelt. Vielen Dank im vorraus
Gruss Rolf