Hinzufügen von Visual FoxPro-API-Aufrufen
Um Ihr Programm in Visual FoxPro zu integrieren, können Sie Visual FoxPro-API-Routinen aufrufen. Diese API-Routinen sind Funktionen, die Sie aus jedem C- oder C++-Programm (auch aus einer OCX- oder FLL-Datei) aufrufen können. Mit diesen Funktionen können Sie auf Variablen zugreifen, Datenbankvorgänge steuern sowie viele andere Visual FoxPro-spezifische Aufgaben erledigen.
In der folgenden Tabelle sind die in Visual FoxPro verfügbaren API-Aufrufe entsprechend ihrer allgemeinen Kategorien zusammengestellt. Weitere Informationen über die einzelnen API-Funktionen finden Sie unter "API-Bibliothek Routinen A-Z" oder "API-Bibliothek Routine nach Kategorie".
Damit Sie die Visual FoxPro-API-Routinen verwenden können, müssen Sie die Datei Pro_ext.h einbinden, die Sie im Visual FoxPro-Unterverzeichnis ...\Samples\API finden. Diese Datei enthält die Prototypen der Funktionen und Strukturen, die es Ihnen ermöglichen, Informationen mit Visual FoxPro auszutauschen.
Wenn Sie ein ActiveX-Steuerelement schreiben, müssen Sie außerdem Aufrufe hinzufügen, über die die API initialisiert bzw. deaktiviert wird.
So fügen Sie Visual FoxPro-API-Routinen zu Ihrem ActiveX-Objekt hinzu
Verwenden Sie
#INCLUDE
, um die Datei Pro_ext.h sowie alle weiteren erforderlichen Headerdateien einzubinden.Rufen Sie im Konstruktor (Init-Methode) des Steuerelements die _OCXAPI( )-Funktion auf, um die Schnittstelle zu Visual FoxPro mit folgendem Code zu initialisieren:
_OCXAPI(AfxGetInstanceHandle(),DLL_PROCESS_ATTACH);
Fügen Sie die Aufrufe der Visual FoxPro-API-Routinen ein, die für Ihr Objekt erforderlich sind.
Rufen Sie im Destruktor (Destroy-Methode) des Objekts erneut _OCXAPI( ) auf, um den Prozess, den der Constructor erstellt hat, mit dem folgenden Code wieder freizugeben:
_OCXAPI(AfxGetInstanceHandle(),DLL_PROCESS_DETACH);
Ein Beispiel für eine OCX-Datei, aus der Visual FoxPro-API-Routinen aufgerufen werden, ist die Datei Foxtlib.ocx. Als Beispiele für eine FLL-Bibliothek, aus der Visual FoxPro-API-Routinen aufgerufen werden, können Sie die Beispielprogramme in Microsoft Visual FoxPro 7\Samples\API anzeigen, die die Erweiterung C haben: EVENT.C, HELLO.C usw.
Wenn Sie in Ihrem ActiveX-Steuerelement, Ihrem COM-Objekt oder Ihrer FLL-Bibliothek Visual FoxPro-API-Aufrufe verwenden, ist der Code, der die Aufrufe enthält, inkompatibel mit anderen Anwendungen. Daher empfiehlt es sich, an bestimmten Stellen des Programms zu prüfen, ob das Objekt aus Visual FoxPro aufgerufen wird.
Wenn Sie ein ActiveX-Steuerelement unter Verwendung der Microsoft Foundation Classes erstellen, können Sie den Constructorcode des Steuerelements z. B. so ändern, dass er einen Test enthält und den Benutzer gegebenenfalls darauf hinweist, dass das Steuerelement nicht aus Visual FoxPro, sondern aus einem anderen Programm aufgerufen wurde:
if (!_OCXAPI(AfxGetInstanceHandle(),DLL_PROCESS_ATTACH))
{
::MessageBox(0,"This OCX can only be hosted by Visual Foxpro","",0);
//Here you can do whatever you want when the host isn't VFP:
// you might want to reject loading or you
// might want to set a property
// saying that the host isn't VFP and the control will use other
// means to achieve it's purpose.
}
Wenn Sie ein ActiveX-Steuerelement unter Verwendung der Microsoft ActiveX Template Library erstellen, verwenden Sie den folgenden Code:
if (!_OCXAPI(_Module.GetModuleInstance(),DLL_PROCESS_ATTACH))
{
::MessageBox(0,"This OCX can only be hosted by Visual Foxpro","",0);
//Here you can do whatever you want when the host isn't VFP:
// you might want to reject loading or you
// might want to set a property
// saying that the host isn't VFP and the control will use other
// means to achieve it's purpose.
}
In diesem Beispiel wird das Steuerelement nicht beendet, sondern es läuft weiter, nachdem der Benutzer die Meldung bestätigt hat. Die von Ihnen gewählte Strategie hängt vom erwarteten Einsatzfall des Steuerelements ab. Wenn Sie z. B. feststellen, dass das Steuerelement außerhalb von Visual FoxPro verwendet wird, können Sie ein Kennzeichen einstellen, das Sie an jedem Punkt des Steuerelements testen, an dem eine Visual FoxPro-API-Routine aufgerufen wird. Wenn das Kennzeichen angibt, dass sich das Steuerelement außerhalb von Visual FoxPro befindet, können Sie den API-Aufruf umgehen und den alternativen Code ausführen, der dieselbe Aufgabe erledigt.
Siehe auch
Erstellen einer FLL-Bibliothek | Zugreifen auf die Visual FoxPro-API | Übergeben und Empfangen von Parametern | Rückgabe eines Wertes an Visual FoxPro | Erweitern von Visual FoxPro mit externen Bibliotheken | Erstellung der API-Bibliothek