-
illuminator schrieb:
"testproggie.obj : error LNK2001: Nichtaufgeloestes externes Symbol _IID_IRegExp
Debug/testproggie.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise"
Ah, ja. Logisch. Hab ich vergessen, extra zu erwähnen: Das Macro DEFINE_GUID legt die Struktur per default nicht an, sondern deklariert sie als extern. Die Abhilfe ist ganz einfach. In einer Deiner Quelldateien (in einer, nicht in allen) inkludierst Du <initguid.h>, bevor Du den soeben selbsterstellten Header regexp.h (oder wie auch immer das bei Dir heisst) inkludierst. In <initguid.h> wird das Macro DEFINE_GUID so umdefiniert, daß auch eine Instanz der Struktur erstellt wird.
illuminator schrieb:
und noch eine Frage: Wo bekommt man denn nun diese IID her?
// {3F4DACA0-160D-11D2-A8E9-00104B365C9F}
Aus OLEView.exe. Du suchst zunächst das Objekt, z.B. unter Object Classes->All Objects. Dort markierst Du den Eintrag "VBScript Regular Expression". Jetzt noch schnell mit der rechten Maustaste geklickt und "View Type Information" gewählt. Jetzt wählst Du unter Interfaces IRegExp aus. Im Edit-Ctrl auf der rechten Seite siehst Du jetzt alles was Du wissen mußt.
illuminator schrieb:
was mich mit kompliziert meine, sind solche Codeschnipsel
Da sehe ich die Verwendung von IDispatch, Du sprachst aber von IUnknown. Aber richtig, IDispatch ist unter C/++ einigermaßen umständlich. Da IRegExp aber glücklicherweise eine duale Schnittstelle ist, kannst Du Dir das sparen.
illuminator schrieb:
... ist das erste mal, dass ich COM/ActiveX außerhalb von VB nutzen will und momentan liegt meine Priorität aus Zeitgründen nicht bei Verstehen von COM, sondern bei erfolgreich benutzen.
Das merkt man. :p
Edit: Mir fällt gerade ein, daß ich das zu Übungszwecken sogar mal in eine Klasse verbastelt habe. Also wenn Du das haben möchtest, lass es mich wissen.