5.9 Generierung der Schnittstelleninformation

In diesem Kapitel werden die Schritte vorgestellt, die notwendig sind um aus einem Dialog mit einem als ole_server definierten Control einen OLE-Server zu bauen.

5.9.1 Generieren der idl- und reg-Dateien

Mit der Option ‑writeole <Basisname> des IDM-Simulationsprogramms idm.exe werden aus einem Dialogskript, das als OLE-Server definierte Controls enthält, die zur Registrierung notwendigen Dateien erzeugt. Es werden eine idl- und eine reg-Datei generiert.

Mit folgenden zusätzlichen Optionen kann die Generierung beeinflusst werden:

Folgende Standardeinträge werden mit idm.exe <Dialog> ‑writeole <Datei> in die Registrierungsdatei <Datei>.reg aufgenommen, wenn sie nicht durch eine der oben genannten Optionen überschrieben wurden:

LocalServer32 = "<Pfad zu idm.exe> <Dialog> /Automation"

TypeLib = "<Datei>.tlb"

HelpDir = ""

DefIcon = ""

Der Name des Proxy-Stubs wird standardmäßig auf <Basisname>.dll gesetzt.

5.9.2 Registrierung des Servers

Ein Doppelklick auf die reg-Datei (sofern reg-Dateien im System korrekt verknüpft sind) oder der Aufruf von regedit.exe mit der generierten reg-Datei als Argument registriert das Control beim System.

Beispiel

server.reg server.idl: server.dlg
  $(IDM) server.dlg \
  -localserver "$(IDM) server.dlg -IDMtracefile server.log" \
    -writeole server
  regedit server.reg

In diesem Beispiel ist auch die Kommandozeile für den Server angegeben, sodass dieser immer ein Tracefile erzeugt. Anschließend wird der Server noch im System registriert.

5.9.3 Weiterverarbeitung der idl-Datei

Die mit Hilfe der Option ‑writeole erzeugte idl-Datei muss mit dem MIDL-Compiler weiterverarbeitet werden, der mit Microsoft Visual Studio ausgeliefert wird. Der MIDL-Compiler erzeugt aus der idl-Datei eine Proxy-DLL, die das OLE-Marshalling des Interfaces übernimmt. Als Standardpfad wird dafür der Ausgabename von ‑writeole mit der Erweiterung .dll genommen, dies kann aber mit der Option +proxy überschrieben werden.

Beispiel

server.tlb server_p.c server_i.c server.h dlldata.c: server.idl
  midl /ms_ext /app_config /c_ext /tlb server.tlb /Zp1 \
    /env win32 /Os server.idl

Die mit dem MIDL-Compiler generierten Dateien müssen dann mit dem C-Compilers übersetzt und zu einer DLL gelinkt werden.