Download - Arbeiten mit Libraries
Wizards & Wizards & Builders GmbH Builders GmbH
Arbeiten mit LibrariesArbeiten mit Libraries
Arbeiten mit FLL- und DLL-Arbeiten mit FLL- und DLL-Libraries unterLibraries unter
Microsoft Visual FoxProMicrosoft Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
Diese Schulung dient der Einführung in das Arbeiten mit
FLLs, DLLS (Windows-API-Funktionen) sowie der Einführung in das Erstellen von FLLs mit der
API-Bibliothek von Microsoft Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
ThemenübersichtThemenübersicht
Arbeiten mit FLLsArbeiten mit FLLs Library-Funktionen, FoxTools-Funktionsübersicht, ProblemeLibrary-Funktionen, FoxTools-Funktionsübersicht, Probleme
Arbeiten mit DLLsArbeiten mit DLLs Deklaration, Parameterübergabe, FILER.DLL/RegistrierungDeklaration, Parameterübergabe, FILER.DLL/Registrierung
Übersicht über WinAPI-FunktionenÜbersicht über WinAPI-Funktionen Fenster, System, I/O, INI/Registry, Netzwerk/User, SonstigeFenster, System, I/O, INI/Registry, Netzwerk/User, Sonstige
Aufruf WINAPI-FunktionenAufruf WINAPI-Funktionen Variablenzuordnung, Übernahme, WertebereicheVariablenzuordnung, Übernahme, Wertebereiche
Erstellen von FLLsErstellen von FLLs Dateien, Werteübergabe, Werterückgabe, FOXINFO, Dateien, Werteübergabe, Werterückgabe, FOXINFO,
FOXTABLE, API-Bibliothek, Vor/NachteileFOXTABLE, API-Bibliothek, Vor/Nachteile
FoxPro-API-BibliothekFoxPro-API-Bibliothek API-Bibliothek, Typen, Strukturen, Variablen, SpeicherzugriffAPI-Bibliothek, Typen, Strukturen, Variablen, Speicherzugriff
Wizards & Wizards & Builders GmbH Builders GmbH
Arbeiten mit FLLsArbeiten mit FLLs
Einsetzen von FLLs mitEinsetzen von FLLs mit
Microsoft Visual FoxProMicrosoft Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
Library-FunktionenLibrary-Funktionen
SET LIBRARY TO <name> ADDITIVESET LIBRARY TO <name> ADDITIVE SET LIBRARY TO, RELEASE LIBRSET LIBRARY TO, RELEASE LIBR
16 / 32 bit-Unterscheidung für FLLs16 / 32 bit-Unterscheidung für FLLs 16bit-FLL nur in FoxPro/Windows (.PLB in DOS)16bit-FLL nur in FoxPro/Windows (.PLB in DOS) 32bit-FLL nur in Visual FoxPro32bit-FLL nur in Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
FoxTools-Funktionen (1)FoxTools-Funktionen (1)
Allgemein:Allgemein: MsgBoxMsgBox RegFn/RegFn32RegFn/RegFn32 CallFnCallFn FoxToolVerFoxToolVer GetProStrgGetProStrg PutProStrgPutProStrg
Strings:Strings: ReduceReduce StrFilterStrFilter WordsWords WordsNumWordsNum NextWordNextWord
Wizards & Wizards & Builders GmbH Builders GmbH
FoxTools-Funktionen (2)FoxTools-Funktionen (2)
ClipBoard:ClipBoard: GetClipDat/FmtGetClipDat/Fmt IsClipFmtIsClipFmt EnumClipFmEnumClipFm RegClipFmtRegClipFmt EmptyClipEmptyClip CountClipFCountClipF Open/CloseClipOpen/CloseClip
Editor:Editor: siehe API-Bibliotheksiehe API-Bibliothek
Fenster:Fenster: siehe API-Bibliotheksiehe API-Bibliothek
Disk/Datei:Disk/Datei: Übernommen in neue Übernommen in neue
VFP-VersionVFP-Version
Wizards & Wizards & Builders GmbH Builders GmbH
Mögliche ProblemeMögliche Probleme
Link-Bibliotheken Link-Bibliotheken versionsabhängigversionsabhängig von der jeweiligen FPW/VFP-Version!von der jeweiligen FPW/VFP-Version! Ergebnis: Fehler 1711 - Revision mismatchErgebnis: Fehler 1711 - Revision mismatch
Ggf. nur eine Instanz (!)Ggf. nur eine Instanz (!) z.B. FOXTOOLS.FLLz.B. FOXTOOLS.FLL gemeinsamer Speicher (unter Windows 95)gemeinsamer Speicher (unter Windows 95)
Ordinalzahl statt NamensexportOrdinalzahl statt Namensexport #DEFINE FnA 1#DEFINE FnA 1 m.LnFnHandle1 = REGFN((FnA),"C@C","I", "MYTEST.DLL")m.LnFnHandle1 = REGFN((FnA),"C@C","I", "MYTEST.DLL")
Wizards & Wizards & Builders GmbH Builders GmbH
Arbeiten mit DLLsArbeiten mit DLLs
Einsatz von Standard-DLLs Einsatz von Standard-DLLs unter unter
Microsoft Visual FoxProMicrosoft Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
DECLARE DLLDECLARE DLL
DECLARE DLLDECLARE DLL Beispiel: Beispiel: Declare Integer GetActiveWindow ;Declare Integer GetActiveWindow ;
IN Win32API AS GetWinHandl IN Win32API AS GetWinHandl
CLEAR DLLSCLEAR DLLS (siehe Load/FreeLibrary)(siehe Load/FreeLibrary)
16 / 32 bit-Unterscheidung FLL/DLL16 / 32 bit-Unterscheidung FLL/DLL 16bit-DLL RegFn/CallFn über FoxTools in 16bit-DLL RegFn/CallFn über FoxTools in
FoxPro/Windows und Visual FoxProFoxPro/Windows und Visual FoxPro 32bit-DLL mit DECLARE nur in Visual FoxPro32bit-DLL mit DECLARE nur in Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
Parameterübergabe (1)Parameterübergabe (1)
Datum immer als Integer (hin/rück)Datum immer als Integer (hin/rück) nDate = val( sys( 11, Date() ))nDate = val( sys( 11, Date() ))
Logische Werte als BOOL (zurück)Logische Werte als BOOL (zurück) BOOL-Rückgabe: 0=FALSE, #0 = TRUEBOOL-Rückgabe: 0=FALSE, #0 = TRUE
VOID / BOOL als Integer (zurück)VOID / BOOL als Integer (zurück) 16 / 32 bit-Werte hexadezimal16 / 32 bit-Werte hexadezimal Arrays als String mit C-Array (Ref.)Arrays als String mit C-Array (Ref.) Übergabe Strukturen kompliziertÜbergabe Strukturen kompliziert
Wizards & Wizards & Builders GmbH Builders GmbH
Parameterübergabe (2)Parameterübergabe (2)
LPSTR = Pointer auf StrukturLPSTR = Pointer auf Struktur „„C“ in Namen = Constant (als String C“ in Namen = Constant (als String
deklarieren)deklarieren) andernfalls mit @ deklarieren andernfalls mit @ deklarieren undund aufrufen (!) aufrufen (!)
Pointer als Parameter möglichPointer als Parameter möglich Pointer in Struktur/auf Funktionen nicht Pointer in Struktur/auf Funktionen nicht
abbildbarabbildbar Struktur links = Pointer auf Struktur, geliefert Struktur links = Pointer auf Struktur, geliefert
wird String - abgeschnitten bei erster Null (!)wird String - abgeschnitten bei erster Null (!) Struktur rechts = Bufferübergabe mit StringStruktur rechts = Bufferübergabe mit String
Wizards & Wizards & Builders GmbH Builders GmbH
Parameterübergabe (3)Parameterübergabe (3)
Strukturdefinition:Strukturdefinition: typedef struct
_SYSTEMTIME { WORD wYear ;WORD wMonth ;WORD wDayOfWeek ; WORD wDay ;WORD wHour ;WORD wMinute ;WORD wSecond ;WORD wMilliseconds ;} SYSTEMTIME
Umsetzung in VFP:Umsetzung in VFP: DECLARE INTEGER ;
GetSystemTime ;IN win32api STRING
@cBuff=SPACE(40) =GetSystemTime(@cBuff)
tYear = ALLTRIM( STR( ASC( ;SUBSTR( cBuff,2))*; 256 + ;ASC( SUBSTR( cBuff,1))))
tMonth = ALLTRIM( STR( ASC( ; SUBSTR(cBuff,4)) * ;256 + ASC(SUBSTR(cBuff,3))))
tDOW = ALLTRIM( STR( ASC( ; SUBSTR( cBuff,6)) * ; 256 + ASC(SUBSTR(cBuff,5))))
Wizards & Wizards & Builders GmbH Builders GmbH
FILER.DLL, RegistrierungFILER.DLL, Registrierung
FILER.DLLFILER.DLL Nachgeliefert Nachgeliefert
als Ersatz für als Ersatz für DateimanagerDateimanager
AufrufbeispielAufrufbeispiel
OLE-Server-DLLs:OLE-Server-DLLs: Registrierung Registrierung
OLE-DLLs mit OLE-DLLs mit REGSRV32.EXEREGSRV32.EXE
ggf. auf .DLL ggf. auf .DLL als Aufruf als Aufruf legen...legen...
Wizards & Wizards & Builders GmbH Builders GmbH
WINAPI-WINAPI-FunktionsübersichtFunktionsübersicht
Übersicht über Funktionen inÜbersicht über Funktionen inWindows-System-DLLs fürWindows-System-DLLs für
Microsoft Visual FoxProMicrosoft Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
WINAPI - FensterfunktionenWINAPI - Fensterfunktionen
BringWindowToTopBringWindowToTop HWND hWnd HWND hWnd // handle of window// handle of window
FindWindowFindWindow LPCTSTR lpClassNameLPCTSTR lpClassName // address of class name// address of class name LPCTSTR lpWindowName LPCTSTR lpWindowName // address of window name// address of window name
GetDesktopWindowGetDesktopWindow GetParentGetParent ShowWindowShowWindow
Wizards & Wizards & Builders GmbH Builders GmbH
WINAPI - SystemfunktionenWINAPI - Systemfunktionen
LoadLibraryLoadLibrary FreeLibraryFreeLibrary GetVersionExGetVersionEx GetLastErrorGetLastError SetLastErrorSetLastError GetSystemDefault GetSystemDefault
LangIDLangID
GetCurrencyFormatGetCurrencyFormat GetNumberFormatGetNumberFormat GetDateFormatGetDateFormat GetTimeFormatGetTimeFormat GetTimeZone GetTimeZone
InformationInformation SetLocalTimeSetLocalTime SetSystemTimeSetSystemTime
Wizards & Wizards & Builders GmbH Builders GmbH
WINAPI - I/O-FunktionenWINAPI - I/O-Funktionen
GetDriveTypeGetDriveType siehe Aufstellungsiehe Aufstellung
GetLogicalDrivesGetLogicalDrives siehe Beispielsiehe Beispiel
GetTempFileNameGetTempFileName GetTempPathGetTempPath GetSystemDirectoryGetSystemDirectory GetWindowsDirectoryGetWindowsDirectory
siehe Beispielsiehe Beispiel
0:0: Typ konnte nicht Typ konnte nicht festgestellt werden festgestellt werden (seltenst der Fall)(seltenst der Fall)
1:1: Das Laufwerk Das Laufwerk existiert nichtexistiert nicht
2:2: Wechselbar Wechselbar (Disketten, MO, etc. )(Disketten, MO, etc. )
3:3: "Normale" Festplatte"Normale" Festplatte 4:4: NetzlaufwerkNetzlaufwerk 5:5: CD-ROMCD-ROM 6:6: RAM-DiskRAM-Disk
Wizards & Wizards & Builders GmbH Builders GmbH
INI / Registry - FunktionenINI / Registry - Funktionen
INI-Dateien:INI-Dateien: WritePrivate WritePrivate
ProfileSection()ProfileSection() WritePrivate WritePrivate
ProfileString()ProfileString() GetPrivate GetPrivate
ProfileSection()ProfileSection() GetPrivate GetPrivate
ProfileString()ProfileString() GetPrivateProfileInt()GetPrivateProfileInt()
Registry:Registry:
RegCloseKey()RegCloseKey() RegCreateKey()RegCreateKey() RegDeleteKey()RegDeleteKey() RegDeleteValue()RegDeleteValue() RegLoadKey()RegLoadKey() RegNotifyChangeKeyValue()RegNotifyChangeKeyValue() RegOpenKey()RegOpenKey() RegQueryInfoKey()RegQueryInfoKey() RegQueryMultipleValues()RegQueryMultipleValues() RegQueryValue()RegQueryValue() RegQueryValueEx()RegQueryValueEx() RegReplaceKey()RegReplaceKey() RegRestoreKey()RegRestoreKey() RegSaveKey()RegSaveKey() RegSetValue()RegSetValue()
Wizards & Wizards & Builders GmbH Builders GmbH
Netzwerk / User - FunktionenNetzwerk / User - Funktionen
GetUserDefaultLangIDGetUserDefaultLangID für aktuellen User statt für Systemfür aktuellen User statt für System
WNetGetUserWNetGetUser NULL-Übergabe für System liefert den NULL-Übergabe für System liefert den
User des aktiven SystemsUser des aktiven Systems
RasDialRasDial umfangreiche Funktionsliste für RAS-umfangreiche Funktionsliste für RAS-
AnbindungAnbindung
Wizards & Wizards & Builders GmbH Builders GmbH
WINAPI - SonstigesWINAPI - Sonstiges
Sleep (Hintergrundprozess)Sleep (Hintergrundprozess) Beep (Sound-Ausgabe)Beep (Sound-Ausgabe)
DECLARE INTEGER Beep IN WIN32API INTEGER, INTEGERDECLARE INTEGER Beep IN WIN32API INTEGER, INTEGER*!* DWORD dwFreq,*!* DWORD dwFreq, // sound frequency, in hertz // sound frequency, in hertz
*!* DWORD dwDuration*!* DWORD dwDuration // sound duration, in // sound duration, in
millisecondsmilliseconds
? Beep( 440, 1000 )? Beep( 440, 1000 )
Die Mehrzahl der rund 2000 Funktionen Die Mehrzahl der rund 2000 Funktionen erfordert umfangreiche Strukturen!erfordert umfangreiche Strukturen!
Wizards & Wizards & Builders GmbH Builders GmbH
WINAPI-AufrufeWINAPI-Aufrufe
Verwendung von Verwendung von Windows-System-DLLs Windows-System-DLLs
unterunterMicrosoft Visual FoxProMicrosoft Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
Zuordnung zu Zuordnung zu VariablenartenVariablenarten
#define#define LPCTSTRLPCTSTR STRINGSTRING (Konstante) (Konstante) #define#define LPTSTRLPTSTR STRING@STRING@ #define#define DWORDDWORD INTEGERINTEGER (Long) (Long) #define#define LPDWORDLPDWORD INTEGER@INTEGER@ #define#define UINTUINT INTEGERINTEGER (Unsigned Int) (Unsigned Int) #define#define LPUINTLPUINT INTEGER@INTEGER@ (Unsigned Int) (Unsigned Int) #define#define LONGLONG INTEGERINTEGER (32 Bit)(32 Bit) #define#define BOOLBOOL INTEGERINTEGER #define#define VOIDVOID INTEGERINTEGER #define#define LPVOIDLPVOID STRING@ (beliebiger Pointer)STRING@ (beliebiger Pointer) #define#define HANDLEHANDLE INTEGERINTEGER (Handle)(Handle) #define#define HWNDHWND INTEGERINTEGER (Handle)(Handle) #define#define HINSTANCEHINSTANCE INTEGERINTEGER (Handle)(Handle)
Wizards & Wizards & Builders GmbH Builders GmbH
Beschreibungen in WINAPI-Beschreibungen in WINAPI-HilfeHilfe
Vorlage in WINAPI-Hilfe:Vorlage in WINAPI-Hilfe:DWORD WNetGetUser(DWORD WNetGetUser(
LPTSTR lpszLocalName,LPTSTR lpszLocalName, // address of local name// address of local name
to get user name forto get user name for
LPTSTR lpszUserName,LPTSTR lpszUserName, // address of buffer for user name // address of buffer for user name
LPDWORD lpcchBuffer LPDWORD lpcchBuffer // address of buffer size variable // address of buffer size variable
););
Visual FoxPro (mit Defines!):Visual FoxPro (mit Defines!):DECLARE DWORD WNetGetUser IN WIN32API ;DECLARE DWORD WNetGetUser IN WIN32API ;
LPTSTR lpszLocalName,; LPTSTR lpszLocalName,; && address of local name && address of local name
to get user name forto get user name for
LPTSTR lpszUserName,;LPTSTR lpszUserName,; && address of buffer&& address of buffer
LPDWORD lpcchBufferLPDWORD lpcchBuffer && address buffer size variable&& address buffer size variable
Wizards & Wizards & Builders GmbH Builders GmbH
Wertebereiche für VariablenWertebereiche für Variablen
intint *2*2 signedsigned System abhängig (2 Bytes)System abhängig (2 Bytes) unsigned intunsigned int *2*2 unsignedunsigned System abhängig (2 Bytes)System abhängig (2 Bytes) charchar 1 1 signed charsigned char -128 bis 127-128 bis 127 unsigned charunsigned char 1 1 nonenone 0 bis 2550 bis 255 shortshort 2 2 short intshort int -32,768 bis 32,767-32,768 bis 32,767 unsigned short 2unsigned short 2 ushort intushort int 0 bis 65,5350 bis 65,535 longlong 4 4 long intlong int -2,147,483,648 bis-2,147,483,648 bis
2,147,483,6472,147,483,647 unsigned longunsigned long 4 4 ulong intulong int 0 bis 4,294,967,2950 bis 4,294,967,295 enumenum 2 2 nonenone -32,768 bis 32,767-32,768 bis 32,767 floatfloat 4 4 nonenone 3.4E ± 38 (7 Stellen)3.4E ± 38 (7 Stellen) doubledouble 8 8 nonenone 1.7E ± 308 (15 Stellen)1.7E ± 308 (15 Stellen) long doublelong double 1010 nonenone 1.2E ± 4932 (19 Stellen)1.2E ± 4932 (19 Stellen)
In VFP sind int/short, unsignd int/unsignd short im Prinzip identischIn VFP sind int/short, unsignd int/unsignd short im Prinzip identisch
Wizards & Wizards & Builders GmbH Builders GmbH
Erstellen von FLLsErstellen von FLLs
Erstellung von FLLs mit dem Erstellung von FLLs mit dem Library Construction Kit vonLibrary Construction Kit von
Microsoft Visual FoxProMicrosoft Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
Benötigte Dateien (außer C+Benötigte Dateien (außer C++)+)
WINAPIMS.LIBWINAPIMS.LIB 1.) alle VFP-Funktionen, die per FLL angesprochen 1.) alle VFP-Funktionen, die per FLL angesprochen
werden könnenwerden können 2.) etlichen Hilfsfunktionen z.B. für 2.) etlichen Hilfsfunktionen z.B. für
SpeichermangagementSpeichermangagement Diese Bibliothek wird zu der FLL einfach dazugelinktDiese Bibliothek wird zu der FLL einfach dazugelinkt
PRO_EXT.HPRO_EXT.H Deklarationen o.g. Funktionen, wichtige Strukturen, Deklarationen o.g. Funktionen, wichtige Strukturen,
ein paar Konstantenein paar Konstanten Einbindung mit:Einbindung mit:
#include <pro_ext.h>#include <pro_ext.h>
Wizards & Wizards & Builders GmbH Builders GmbH
ParameterübergabeParameterübergabe
Übergabe Adresse ParameterblockÜbergabe Adresse Parameterblock Enthält Anzahl der Parameter und Enthält Anzahl der Parameter und
je Parameter ein Strukturelement je Parameter ein Strukturelement mit dem jeweiligen Wert, mit dem jeweiligen Wert, Ausnahmen:Ausnahmen: Referenz-Parameter kommt als PointerReferenz-Parameter kommt als Pointer Stringübergabe als Handle (Adr of Adr)Stringübergabe als Handle (Adr of Adr)
Hinweis: Datumsübergabe Double Hinweis: Datumsübergabe Double (!)(!)
Wizards & Wizards & Builders GmbH Builders GmbH
WerterückgabeWerterückgabe
Deklaration als Deklaration als „void“ oder „void „void“ oder „void far“ - also keine far“ - also keine direkten direkten FunktionsresultatFunktionsresultatee
Stattdessen Stattdessen Werterückgabe Werterückgabe via via Funktionsaufruf:Funktionsaufruf:
_RetChar()_RetChar() _RetCurrency()_RetCurrency() _RetDateStr()_RetDateStr() _RetDateTimeStr()_RetDateTimeStr() _RetFloat()_RetFloat() _RetInt()_RetInt() _RetLogical()_RetLogical() _RetVal()_RetVal()
void EineFunktion(ParamBlk *parm)void EineFunktion(ParamBlk *parm)
{{
_RetChar( "Rückgabe an FoxPro" );_RetChar( "Rückgabe an FoxPro" );
}}
Wizards & Wizards & Builders GmbH Builders GmbH
Parameterarten, FunktionenParameterarten, Funktionen
Parameterarten:Parameterarten: „“„“ - kein Parameter- kein Parameter „„C“C“ - Charakter- Charakter „„D“D“ - Datum- Datum „„I“I“ - Integer- Integer „„L“L“ - Logisch- Logisch „„N“N“ - Numerisch- Numerisch „„R“R“ - Referenz- Referenz „„T“T“ - DateTime- DateTime „„Y“Y“ - Währung- Währung „„O“O“ - Objekt- Objekt
Feste Funktionen:Feste Funktionen: INTERNALINTERNAL
interne Funktioninterne Funktion
CALLONLOADCALLONLOAD Aufruf beim LadenAufruf beim Laden
CALLONUN-LOADCALLONUN-LOAD Aufruf beim Entladen Aufruf beim Entladen
(kein Par.)(kein Par.)
Wizards & Wizards & Builders GmbH Builders GmbH
FOXINFO-StrukturFOXINFO-Struktur
Name der Funktion unter VFP (Groß)Name der Funktion unter VFP (Groß) Name der Funktion in C (Exakt)Name der Funktion in C (Exakt)
Pointer, Type-Cast aus PRO_EXT.H: FPFIPointer, Type-Cast aus PRO_EXT.H: FPFI
Maximalzahl der ParameterMaximalzahl der Parameter Typ der Parameter (CSV-Liste, . = opt.)Typ der Parameter (CSV-Liste, . = opt.) Beispiel:Beispiel:
FoxInfo myFoxInfo[] = {FoxInfo myFoxInfo[] = {
{"VFPFUNKTION",(FPFI) EineFunktion, 2, "I,.C"},{"VFPFUNKTION",(FPFI) EineFunktion, 2, "I,.C"},
};};
Wizards & Wizards & Builders GmbH Builders GmbH
FOXTABLE-StrukturFOXTABLE-Struktur
Die eigentliche Verbindung zu FoxPro Die eigentliche Verbindung zu FoxPro wird über die Struktur FoxTable wird über die Struktur FoxTable hergestellt. FoxPro sucht beim Laden hergestellt. FoxPro sucht beim Laden einer FLL diese Struktur und entnimmt einer FLL diese Struktur und entnimmt ihr alle erforderlichen Informationen.ihr alle erforderlichen Informationen.
FoxTable _FoxTable = {FoxTable _FoxTable = {
(FoxTable *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo(FoxTable *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};};
Die Sizeof-Berechnungen dienen nur der (dadurch auch bei Die Sizeof-Berechnungen dienen nur der (dadurch auch bei Strukturänderungen immer korrekten) Berechnung der Anzahl der Einträge Strukturänderungen immer korrekten) Berechnung der Anzahl der Einträge innerhalb der FoxInfo-Struktur, m.a.W. der Anzahl der exportierten innerhalb der FoxInfo-Struktur, m.a.W. der Anzahl der exportierten FunktionenFunktionen
Wizards & Wizards & Builders GmbH Builders GmbH
Template für C / C++Template für C / C++
#include <pro_ext.h>void Internal_Name(ParamBlk *parm){// function code goes here.}FoxInfo myFoxInfo[] = {{"FUNC_NAME", (FPFI) Internal_Name, 0, ""},};extern "C“ { <== für C++<== für C++FoxTable _FoxTable = {(FoxTable *)0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo};} <== für C++<== für C++
Wizards & Wizards & Builders GmbH Builders GmbH
Vor-/Nachteile von FLLsVor-/Nachteile von FLLs
Vorteile:Vorteile: Alle Funktionen Alle Funktionen
von VFP in C von VFP in C verfügbar (seek, verfügbar (seek, wait wind usw.)wait wind usw.)
Keine Deklaration Keine Deklaration notwendig (Direkt-notwendig (Direkt-aufruf möglich)aufruf möglich)
Nachteile:Nachteile: Können nur von Können nur von
FoxPro verwendet FoxPro verwendet werdenwerden
FLL ohne FLL ohne Rückgabe kann Rückgabe kann mit Rückgabe mit Rückgabe deklariert werden deklariert werden (Endung als DLL)(Endung als DLL)
Wizards & Wizards & Builders GmbH Builders GmbH
FoxPro-API-BibliothekFoxPro-API-Bibliothek
Die API-Bibliothek vonDie API-Bibliothek von
Microsoft Visual FoxProMicrosoft Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
API-Bibliothek (1)API-Bibliothek (1)
_Activate_Activate _Alloc (Speicher)_Alloc (Speicher) _DB (*) _DB (*)
(Datenbank)(Datenbank) _Deactivate_Deactivate _Dialog (Message)_Dialog (Message) _Dispose _Dispose
(Löschen)(Löschen) _Ed (*) (Editor)_Ed (*) (Editor)
_Error/_ErrorInfo_Error/_ErrorInfo _Evaluate (!)_Evaluate (!) _Execute (!)_Execute (!) _F (*) (LowLevel)_F (*) (LowLevel) _Find _Find
(Objektsuche)(Objektsuche) _Free (Freigabe)_Free (Freigabe) _Get (Information)_Get (Information)
Wizards & Wizards & Builders GmbH Builders GmbH
API-Bibliothek (2)API-Bibliothek (2)
_GetItem (Handle)_GetItem (Handle) _Global _Global
(Variablen)(Variablen) _H (DB-Header)_H (DB-Header) _Mem (Speicher)_Mem (Speicher) _Menu (Menü)_Menu (Menü) _Memo (Memo)_Memo (Memo) _Mouse (Maus)_Mouse (Maus)
_New (Neuanlage)_New (Neuanlage) _Object_Object _Put (Ausgabe)_Put (Ausgabe) _Ret (Rückgabe)_Ret (Rückgabe) _Set (Einstellung)_Set (Einstellung) _Str (Konversion)_Str (Konversion) _W (*) (Fenster)_W (*) (Fenster)
Wizards & Wizards & Builders GmbH Builders GmbH
API-DatentypenAPI-Datentypen
EDLINEEDLINE - Zeilennummer Editfenster- Zeilennummer Editfenster EDPOSEDPOS - Zeichenposition dito- Zeichenposition dito FCHANFCHAN - Low-Level-File-Handle- Low-Level-File-Handle FPFIFPFI - Funktionspointer (Integer)- Funktionspointer (Integer) ITEMIDITEMID - Identifier Menüeintrag- Identifier Menüeintrag MENUIDMENUID - Identifier Menü- Identifier Menü MHANDLEMHANDLE - Identifier Speicherblock- Identifier Speicherblock NTINTI - Name-Table-Index- Name-Table-Index WHANDLEWHANDLE - Fenster-Handle- Fenster-Handle
Wizards & Wizards & Builders GmbH Builders GmbH
API-DatenstrukturenAPI-Datenstrukturen
EventRecEventRec - Ereignisstruktur- Ereignisstruktur FoxInfoFoxInfo - siehe oben- siehe oben FoxTableFoxTable - siehe oben- siehe oben LocatorLocator - Übergabe Parameter- Übergabe Parameter ParamBlkParamBlk - siehe oben- siehe oben ParameterParameter- Übergabe Parameter Ref.- Übergabe Parameter Ref. PointPoint - Koordinaten- Koordinaten RectRect - Koordinaten Rechteck- Koordinaten Rechteck ValueValue - Übergabe Parameter Wert- Übergabe Parameter Wert
Wizards & Wizards & Builders GmbH Builders GmbH
API-Variablen-ZugriffAPI-Variablen-Zugriff
NTI = Name Table Index NTI = Name Table Index (Array)(Array)
_NameTableIndex( ) für Suche_NameTableIndex( ) für Suche _Load( )_Load( )= Lesen= Lesen _Store( )_Store( ) = Schreiben = Schreiben _NewVar( )= neue Variable_NewVar( )= neue Variable _Release( )_Release( ) = Variable löschen= Variable löschen
Wizards & Wizards & Builders GmbH Builders GmbH
API-Speicher-ZugriffAPI-Speicher-Zugriff
Speicherzugriff über HandlesSpeicherzugriff über Handles Handle ist ein Index in ein Array von Handle ist ein Index in ein Array von
Pointer auf SpeicherPointer auf Speicher Zugriffsfunktionen unter C:Zugriffsfunktionen unter C:
_AllocHandle( )_AllocHandle( ) _HLock( )_HLock( ) _HandToPtr( )_HandToPtr( ) *-- Verwendung*-- Verwendung _HUnLock( )_HUnLock( )
Hinweis: _AllocMemo( ) für Memofelder (!)Hinweis: _AllocMemo( ) für Memofelder (!)
Wizards & Wizards & Builders GmbH Builders GmbH
FragestellungenFragestellungen
Auswahl und Auswahl und Einsatz von FLLsEinsatz von FLLs
Auswahl und Auswahl und Einsatz von DLLsEinsatz von DLLs
Einsatz von WIN-Einsatz von WIN-API-FunktionenAPI-Funktionen
Selbsterstellung Selbsterstellung von FLLs mit APIvon FLLs mit API
Wizards & Wizards & Builders GmbH Builders GmbH
Vielen Dank!Vielen Dank!
Das waren die Themen:Das waren die Themen: Arbeiten mit FLLsArbeiten mit FLLs
Library, FoxTools-Library, FoxTools-Übersicht, Übersicht, ProblemeProbleme
Arbeiten mit DLLsArbeiten mit DLLs Deklaration, Parameter-übergabe, Deklaration, Parameter-übergabe,
FILERFILER/OLE/OLE
WinAPI-FunktionenWinAPI-Funktionen Fenster, System, I/O, INI/Registry, Fenster, System, I/O, INI/Registry,
Netzwerk/User, SonstigeNetzwerk/User, Sonstige
Variablenzuordnung, Übernahme, Variablenzuordnung, Übernahme, WertebereicheWertebereiche
Erstellen von FLLsErstellen von FLLs Dateien, Werteübergabe, Dateien, Werteübergabe,
Werterückgabe, FOXINFO, FOXTABLE, Werterückgabe, FOXINFO, FOXTABLE, API-Bibliothek, Vor/NachteileAPI-Bibliothek, Vor/Nachteile
FoxPro-API-BibliothekFoxPro-API-Bibliothek API-Bibliothek, Typen, Strukturen, API-Bibliothek, Typen, Strukturen,
Variablen, SpeicherzugriffVariablen, Speicherzugriff
Wizards & Wizards & Builders GmbH Builders GmbH
Wenn Fragen bestehen:Wenn Fragen bestehen:
Wizards & BuildersWizards & BuildersMethodische Software-Methodische Software-
Entwicklung GmbHEntwicklung GmbH
Frankfurter Str. 21bFrankfurter Str. 21b
61476 Kronberg61476 Kronberg
Tel.: 06173-950906Tel.: 06173-950906
Fax: 06173-950907Fax: 06173-950907
CIS: 101605,175CIS: 101605,175