Konstanten über COM

Hallo,
ich habe eine VC++ - DLL-Datei und benutze diese mittels COM in VB6. Jetzt habe ich in C++ ein paar Konstanten(Strings), die ich gerne nach aussen zugänglich machen würde, damit ich diese auch in VB nutzen kann. Die einzige Möglichkeit, die ich gefunden habe, war, diese Konstanten als Eigenschaften anzulegen, welche dann mittels einer Get-Methode ohne Inputparams gelesen werden können. Das finde ich aber etwas unschön, weils ja halt Konstanten sind.
Weiss da jemand eine bessere Möglichkeit?
(Wenns geht mit kurzen Quellcode-Hinweisen)

Ralph

Nein, kenne ich nicht.

Konstanten sind nur Platzhalter für bestimmte Werte und werden von dem Compiler umgesetzt, so dass die Namen der Konstanten in den Kompilaten nicht mehr bekannt sind.

Gruß
AP

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Ralph,

man kann in COM auch enums definieren. Vielleicht kannst Du ja Deine String-Konstanten mit enum-Konstanten identifiziren. Um ein enum zu deklarieren (und dessen Werte dann in VB zu nutzen) deklariert man es einfach in der idl-Datei, z.B.:

// myCOM.idl
//\*\*\*\*\*\*\*\*\*\*
 
typedef enum 
{
 ID\_1 = 1,
 ID\_2 = 2,
 ID\_3 = 3
} EMyCOM;

Also genauso wie in C++. Die enum-Konstanten koennen dann so in VB benutzt werden (ich glaube mit Angabe des entsprechenden Lib, bin mir aber nicht sicher, also z.B. MyCOMLib.ID_1). Du kannst dann diesen Typ auch als Argument für Schnittstellen-Methoden nutzen, z.B.

// myCOM.idl
//\*\*\*\*\*\*\*\*\*\*
interface IMyCOM : IDispatch
{
 [id(1), helpstring("Methode GetString: liefert den String zur angegebenen ID")] 
 HRESULT GetString([in]EMyCOM stringID, [out] BSTR\* pResult);
};

Ich hoffe, das hilft Dir weiter.

Gruss - Rolf