EXPORTS
Sortiere @1
TestByte @2
CPP-Datei
Damit dürfte alles Wesentliche zur DEF-Datei gesagt sein, und wir können uns dem eigentlichen Quelltext
zuwenden, der C-Quelldatei.
Das minimale Grundgerüst für unsere DLL sieht folgendermaßen aus:
#include <windows.h>
...
BOOL WINAPI DllMain (HINSTANCE hDLL, DWORD dwReason, LPVOID lpReserved)
{
return TRUE;
}
Da wäre zunächst einmal das Einbinden von windows.h für die Unterstützung der grundlegenden Win-
dows-Deklarationen. Sollten Sie mit dem Datentyp VARIANT oder mit Basic-Strings (BSTR) experimen-
tieren, müssen Sie:
#include <ole2.h>
einbinden. Danach kommen Ihre selbst definierten Funktionen. Was es mit DllMain auf sich hat, klärt der
folgende Abschnitt.
Ein- und Austrittsprozedur
Bei DllMain handelt es sich um die so genannte DLL-Eintrittsprozedur, dem Pendant zum Hauptpro-
gramm einer normalen Anwendung. Mit dieser Prozedur reagieren Sie auf das Laden/Entladen einer DLL
durch externe Anwendungen:
BOOL WINAPI DllMain (HINSTANCE hDLL, DWORD dwReason, LPVOID lpReserved)
Für die weitere Arbeit werden Sie in den meisten Fällen den Parameter dwReason auswerten müssen. Dieser
entscheidet über die folgenden Zustände:
Wert Beschreibung
DLL_PROCESS_ATTACH Ein neuer Prozess (z. B. Ihr Access-Programm) versucht auf die DLL zuzugreifen.
DLL_THREAD_ATTACH Ein neuer Thread eines existierenden Prozesses versucht auf die DLL zuzugreifen (da Sie als Program-
mierer in Access keinen zweiten Thread erzeugen können, tritt dieser Fall auch nicht ein).
DLL_PROCESS_DETACH Ein Prozess trennt sich von der DLL. Das heißt jedoch nicht, dass die DLL aus dem Speicher entfernt
wird. Es könnten ja noch weitere Prozesse auf die DLL zugreifen.
DLL_THREAD_DETACH Ein Thread trennt sich von der DLL.
Tabelle 16.6 Werte des Parameters dwReason
1065
DLL-Programmierung mit C++ 2005

Get Microsoft Office Access 2007-Programmierung - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.