Wizards & Builders GmbH Arbeiten mit Libraries Arbeiten mit FLL- und DLL- Libraries unter Microsoft Visual FoxPro.

Slides:



Advertisements
Ähnliche Präsentationen
Einführung in die Programmiersprache C/C++
Advertisements

Datenbankzugriff über ISAPI-Webservererweiterungen
C Sharp (C#) Martin Saternus Senior Student Partner
ALP II: Objektorientierte Programmierung Sommersemester 2006
der Universität Oldenburg
Imperative Programmierung
der Universität Oldenburg
Forschungszentrum caesar
C Tutorium – Fehlerbehandlung – Knut Stolze. 2 Grundsatz Also ist auch nach jedem Funktionsaufruf auf Fehler zu prüfen!! Jeder(!) Funktionsaufruf kann.
Ein paar Grundlagen zur Informatik
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Java: Grundlagen der Sprache
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Konstruktoren.
Objekte und Arbeitsspeicher
Spieleprogrammierung mit DirectX und C++
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Zusammenfassung Vorwoche
Concurrent Versions System
Einführung in Visual C++
14StrukturKlasse1 Von der Struktur zur Klasse von C zu C++ Von Jens Hoffmann
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
Arrays,Strings&Pointer in C/C++
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Wizards & Builders GmbH Der Menügenerator Arbeiten mit dem Menügenerator und ggf. Zusatztools unter Microsoft Visual FoxPro.
Wizards & Builders GmbH Hypertext Markup Language Beschreibung von HTML als Vorbereitung für Webserver mit Microsoft Visual FoxPro.
Wizards & Builders GmbH INI-Dateien und Registry Arbeiten mit der Registry von Windows NT / Windows 95 in Microsoft Visual FoxPro.
Wizards & Builders GmbH Klassenbibliotheken Arbeiten mit Klassenbibliotheken in Microsoft Visual FoxPro.
Wizards & Builders GmbH Projektmanager und SourceSafe Arbeiten mit dem Projektmanager von Microsoft Visual FoxPro.
Wizards & Builders GmbH Programmierstil Hinweise zum Programmierstil unter Microsoft Visual FoxPro.
Wizards & Builders GmbH Arbeiten mit CSV-Listen Arbeiten mit CSV-Listen unter Microsoft Visual FoxPro.
Wizards & Builders GmbH Übersicht Schulung Übersicht über Schulung für Entwickler unter Microsoft Visual FoxPro.
Wizards & Builders GmbH Distribution von Applikationen Distribution und Installation unter Microsoft Visual FoxPro.
Handling und Erstellung von: DLL, EXE, COM, DCOM
Bidirektionales VFX-XML-Interface für Daten-Import/Export Visual Extend Anwendertreffen 2009 Rainer Becker, Frank Kropp deutschsprachige FoxPro User Group.
Arbeiten mit Konstanten in Visual FoxPro 9.0 deutschsprachige FoxPro User Group Rainer Becker Microsoft Visual FoxPro 9.0 Roadshow CONST.
Erstellen von WebServices mit Visual FoxPro 9.0
Grundkonzepte Java - Klassendefinition
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Einführung in die Programmierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Einführung in die Programmiersprache C 4
Informatik 1 Letzte Übung.
MMIX-Edit Felix Albrecht.
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Primär(x)f(x)a[x]new typeof sizeof checked unchecked Unär+-~!++x--x x++ x-- (T)x Multip./Divis.*/% Addition/Subtr.+- shift > kleiner/größer = is gleich/ungleich==!=
Arduino Kurs Abend 2.
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Datentypen: integer, char, string, boolean
Datentypen Überblick Datentypen Einfache / fundamentale Datentypen
BMEVIEEA100 Grundlagen der Programmierung
Hochschule Fulda – FB ET Sommersemester 2014
Objekte und Literale ODMG-Objektmodell kennt zwei Arten von Datenelementen: Literale: Identität ist ausschließlich durch Wert gegeben. Nur maximal eine.
RelationentheorieObjektorientierte Datenbanken  AIFB SS C++-ODL (1/6) Erweiterung des deklarativen Teils einer C++-Klasse Datentypen d_String,
Diskrete Mathematik I Vorlesung 2 Arrays.
Pointer. Precompiled Header  Vorübersetzung eingebundener Dateien häufig genutzt, selten geändert  Projekttyp „Win32 Console Application“
Variablen und Operatoren. C++ Teil 2: Grundstrukturen Variablen Operatoren Kontrollstrukturen Funktionen Header-Dateien Pointer und Referenzen.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.
Pointer. * und &  Bei der Definition int var1; ○ // „normale“ Variable int *var2; ○ // Zeiger auf einen Integer int *var2 = NULL; ○ // … incl. Initialisierung.
ESP Tutorium Studienassistent: Ewald Moitzi Gruppe 1.
Visual FoxPro Advanced Umstellen auf 64 bit
Konstruktoren.
Implementieren von Klassen
 Präsentation transkript:

Wizards & Builders GmbH Arbeiten mit Libraries Arbeiten mit FLL- und DLL- Libraries unter Microsoft Visual FoxPro

Wizards & 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 & Builders GmbH Themenübersicht Arbeiten mit FLLs Arbeiten mit FLLs Library-Funktionen, FoxTools-Funktionsübersicht, Probleme Library-Funktionen, FoxTools-Funktionsübersicht, Probleme Arbeiten mit DLLs Arbeiten mit DLLs Deklaration, Parameterübergabe, FILER.DLL/Registrierung Deklaration, Parameterübergabe, FILER.DLL/Registrierung Übersicht über WinAPI-Funktionen Übersicht über WinAPI-Funktionen Fenster, System, I/O, INI/Registry, Netzwerk/User, Sonstige Fenster, System, I/O, INI/Registry, Netzwerk/User, Sonstige Aufruf WINAPI-Funktionen Aufruf WINAPI-Funktionen Variablenzuordnung, Übernahme, Wertebereiche Variablenzuordnung, Übernahme, Wertebereiche Erstellen von FLLs Erstellen von FLLs Dateien, Werteübergabe, Werterückgabe, FOXINFO, FOXTABLE, API- Bibliothek, Vor/Nachteile Dateien, Werteübergabe, Werterückgabe, FOXINFO, FOXTABLE, API- Bibliothek, Vor/Nachteile FoxPro-API-Bibliothek FoxPro-API-Bibliothek API-Bibliothek, Typen, Strukturen, Variablen, Speicherzugriff API-Bibliothek, Typen, Strukturen, Variablen, Speicherzugriff

Wizards & Builders GmbH Arbeiten mit FLLs Einsetzen von FLLs mit Microsoft Visual FoxPro

Wizards & Builders GmbH Library-Funktionen SET LIBRARY TO ADDITIVE SET LIBRARY TO ADDITIVE SET LIBRARY TO, RELEASE LIBR SET LIBRARY TO, RELEASE LIBR 16 / 32 bit-Unterscheidung für FLLs 16 / 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 FoxPro 32bit-FLL nur in Visual FoxPro

Wizards & Builders GmbH FoxTools-Funktionen (1) Allgemein: MsgBox MsgBox RegFn/RegFn32 RegFn/RegFn32 CallFn CallFn FoxToolVer FoxToolVer GetProStrg GetProStrg PutProStrg PutProStrgStrings: Reduce Reduce StrFilter StrFilter Words Words WordsNum WordsNum NextWord NextWord

Wizards & Builders GmbH FoxTools-Funktionen (2) ClipBoard: GetClipDat/Fmt GetClipDat/Fmt IsClipFmt IsClipFmt EnumClipFm EnumClipFm RegClipFmt RegClipFmt EmptyClip EmptyClip CountClipF CountClipF Open/CloseClip Open/CloseClipEditor: siehe API-Bibliothek siehe API-BibliothekFenster: Disk/Datei: Übernommen in neue VFP- Version Übernommen in neue VFP- Version

Wizards & Builders GmbH Mögliche Probleme Link-Bibliotheken versionsabhängig Link-Bibliotheken versionsabhängig von der jeweiligen FPW/VFP-Version! von der jeweiligen FPW/VFP-Version! Ergebnis: Fehler Revision mismatch Ergebnis: Fehler Revision mismatch Ggf. nur eine Instanz (!) Ggf. nur eine Instanz (!) z.B. FOXTOOLS.FLL z.B. FOXTOOLS.FLL gemeinsamer Speicher (unter Windows 95) gemeinsamer Speicher (unter Windows 95) Ordinalzahl statt Namensexport Ordinalzahl statt Namensexport #DEFINE FnA 1 #DEFINE FnA 1 m.LnFnHandle1 = "MYTEST.DLL") m.LnFnHandle1 = "MYTEST.DLL")

Wizards & Builders GmbH Arbeiten mit DLLs Einsatz von Standard-DLLs unter Microsoft Visual FoxPro

Wizards & Builders GmbH DECLARE DLL DECLARE DLL DECLARE DLL Beispiel: Declare Integer GetActiveWindow ; IN Win32API AS GetWinHandl Beispiel: Declare Integer GetActiveWindow ; IN Win32API AS GetWinHandl CLEAR DLLS CLEAR DLLS (siehe Load/FreeLibrary) (siehe Load/FreeLibrary) 16 / 32 bit-Unterscheidung FLL/DLL 16 / 32 bit-Unterscheidung FLL/DLL 16bit-DLL RegFn/CallFn über FoxTools in FoxPro/Windows und Visual FoxPro 16bit-DLL RegFn/CallFn über FoxTools in FoxPro/Windows und Visual FoxPro 32bit-DLL mit DECLARE nur in Visual FoxPro 32bit-DLL mit DECLARE nur in Visual FoxPro

Wizards & Builders GmbH 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 = TRUE BOOL-Rückgabe: 0=FALSE, #0 = TRUE VOID / BOOL als Integer (zurück) VOID / BOOL als Integer (zurück) 16 / 32 bit-Werte hexadezimal 16 / 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 & Builders GmbH Parameterübergabe (2) LPSTR = Pointer auf Struktur LPSTR = Pointer auf Struktur C in Namen = Constant (als String deklarieren) C in Namen = Constant (als String deklarieren) andernfalls deklarieren und aufrufen (!) andernfalls deklarieren und aufrufen (!) Pointer als Parameter möglich Pointer als Parameter möglich Pointer in Struktur/auf Funktionen nicht abbildbar Pointer in Struktur/auf Funktionen nicht abbildbar Struktur links = Pointer auf Struktur, geliefert wird String - abgeschnitten bei erster Null (!) Struktur links = Pointer auf Struktur, geliefert wird String - abgeschnitten bei erster Null (!) Struktur rechts = Bufferübergabe mit String Struktur rechts = Bufferübergabe mit String

Wizards & Builders GmbH Parameterübergabe (3) Strukturdefinition: l l typedef struct _SYSTEMTIME { WORD wYear ; WORD wMonth ; WORD wDayOfWeek ; WORD wDay ; WORD wHour ; WORD wMinute ; WORD wSecond ; WORD wMilliseconds ;} SYSTEMTIME Umsetzung in VFP: l l DECLARE INTEGER ; GetSystemTime ; IN win32api cBuff=SPACE(40) l l tYear = ALLTRIM( STR( ASC( ; SUBSTR( cBuff,2))*; ; ASC( SUBSTR( cBuff,1)))) l l tMonth = ALLTRIM( STR( ASC( ; SUBSTR(cBuff,4)) * ; ASC(SUBSTR(cBuff,3)))) l l tDOW = ALLTRIM( STR( ASC( ; SUBSTR( cBuff,6)) * ; ASC(SUBSTR(cBuff,5))))

Wizards & Builders GmbH FILER.DLL, Registrierung FILER.DLL Nachgeliefert als Ersatz für Dateimanager Nachgeliefert als Ersatz für Dateimanager Aufrufbeispiel AufrufbeispielOLE-Server-DLLs: Registrierung OLE-DLLs mit REGSRV32.EXE Registrierung OLE-DLLs mit REGSRV32.EXE ggf. auf.DLL als Aufruf legen... ggf. auf.DLL als Aufruf legen...

Wizards & Builders GmbH WINAPI-Funktionsübersicht Übersicht über Funktionen in Windows-System-DLLs für Microsoft Visual FoxPro

Wizards & Builders GmbH WINAPI - Fensterfunktionen BringWindowToTop BringWindowToTop HWND hWnd // handle of window HWND hWnd // handle of window FindWindow FindWindow LPCTSTR lpClassName// address of class name LPCTSTR lpClassName// address of class name LPCTSTR lpWindowName // address of window name LPCTSTR lpWindowName // address of window name GetDesktopWindow GetDesktopWindow GetParent GetParent ShowWindow ShowWindow

Wizards & Builders GmbH WINAPI - Systemfunktionen LoadLibrary LoadLibrary FreeLibrary FreeLibrary GetVersionEx GetVersionEx GetLastError GetLastError SetLastError SetLastError GetSystemDefault LangID GetSystemDefault LangID GetCurrencyFormat GetCurrencyFormat GetNumberFormat GetNumberFormat GetDateFormat GetDateFormat GetTimeFormat GetTimeFormat GetTimeZone Information GetTimeZone Information SetLocalTime SetLocalTime SetSystemTime SetSystemTime

Wizards & Builders GmbH WINAPI - I/O-Funktionen GetDriveType GetDriveType siehe Aufstellung siehe Aufstellung GetLogicalDrives GetLogicalDrives siehe Beispiel siehe Beispiel GetTempFileName GetTempFileName GetTempPath GetTempPath GetSystemDirectory GetSystemDirectory GetWindowsDirectory GetWindowsDirectory siehe Beispiel siehe Beispiel l 0:Typ konnte nicht festgestellt werden (seltenst der Fall) l 1:Das Laufwerk existiert nicht l 2:Wechselbar (Disketten, MO, etc. ) l 3:"Normale" Festplatte l 4:Netzlaufwerk l 5:CD-ROM l 6:RAM-Disk

Wizards & Builders GmbH INI / Registry - Funktionen INI-Dateien: WritePrivate ProfileSection() WritePrivate ProfileSection() WritePrivate ProfileString() WritePrivate ProfileString() GetPrivate ProfileSection() GetPrivate ProfileSection() GetPrivate ProfileString() GetPrivate ProfileString() GetPrivateProfileInt() GetPrivateProfileInt()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 & Builders GmbH Netzwerk / User - Funktionen GetUserDefaultLangID GetUserDefaultLangID für aktuellen User statt für System für aktuellen User statt für System WNetGetUser WNetGetUser NULL-Übergabe für System liefert den User des aktiven Systems NULL-Übergabe für System liefert den User des aktiven Systems RasDial RasDial umfangreiche Funktionsliste für RAS- Anbindung umfangreiche Funktionsliste für RAS- Anbindung

Wizards & Builders GmbH WINAPI - Sonstiges Sleep (Hintergrundprozess) Sleep (Hintergrundprozess) Beep (Sound-Ausgabe) Beep (Sound-Ausgabe) DECLARE INTEGER Beep IN WIN32API INTEGER, INTEGER *!* DWORD dwFreq,// sound frequency, in hertz *!* DWORD dwDuration// sound duration, in milliseconds ? Beep( 440, 1000 ) Die Mehrzahl der rund 2000 Funktionen erfordert umfangreiche Strukturen! Die Mehrzahl der rund 2000 Funktionen erfordert umfangreiche Strukturen!

Wizards & Builders GmbH WINAPI-Aufrufe Verwendung von Windows- System-DLLs unter Microsoft Visual FoxPro

Wizards & Builders GmbH Zuordnung zu Variablenarten l #defineLPCTSTRSTRING (Konstante) l l #defineDWORDINTEGER (Long) l l #defineUINTINTEGER (Unsigned Int) l (Unsigned Int) l #defineLONGINTEGER(32 Bit) l #defineBOOLINTEGER l #defineVOIDINTEGER l (beliebiger Pointer) l #defineHANDLEINTEGER(Handle) l #defineHWNDINTEGER(Handle) l #defineHINSTANCEINTEGER(Handle)

Wizards & Builders GmbH Beschreibungen in WINAPI-Hilfe l Vorlage in WINAPI-Hilfe: DWORD WNetGetUser( LPTSTR lpszLocalName,// address of local name to get user name for to get user name for LPTSTR lpszUserName,// address of buffer for user name LPDWORD lpcchBuffer // address of buffer size variable ); l Visual FoxPro (mit Defines!): DECLARE DWORD WNetGetUser IN WIN32API ; LPTSTR lpszLocalName,; && address of local name to get user name for to get user name for LPTSTR lpszUserName,; && address of buffer LPDWORD lpcchBuffer&& address buffer size variable

Wizards & Builders GmbH Wertebereiche für Variablen l int*2signedSystem abhängig (2 Bytes) l unsigned int*2unsignedSystem abhängig (2 Bytes) l char 1signed char-128 bis 127 l unsigned char 1none0 bis 255 l short 2short int-32,768 bis 32,767 l unsigned short 2ushort int0 bis 65,535 l long 4long int-2,147,483,648 bis 2,147,483,647 2,147,483,647 l unsigned long 4ulong int0 bis 4,294,967,295 l enum 2none-32,768 bis 32,767 l float 4none3.4E ± 38 (7 Stellen) l double 8none1.7E ± 308 (15 Stellen) l long double10none1.2E ± 4932 (19 Stellen) In VFP sind int/short, unsignd int/unsignd short im Prinzip identisch

Wizards & Builders GmbH Erstellen von FLLs Erstellung von FLLs mit dem Library Construction Kit von Microsoft Visual FoxPro

Wizards & Builders GmbH Benötigte Dateien (außer C++) WINAPIMS.LIB WINAPIMS.LIB 1.) alle VFP-Funktionen, die per FLL angesprochen werden können 1.) alle VFP-Funktionen, die per FLL angesprochen werden können 2.) etlichen Hilfsfunktionen z.B. für Speichermangagement 2.) etlichen Hilfsfunktionen z.B. für Speichermangagement Diese Bibliothek wird zu der FLL einfach dazugelinkt Diese Bibliothek wird zu der FLL einfach dazugelinkt PRO_EXT.H PRO_EXT.H Deklarationen o.g. Funktionen, wichtige Strukturen, ein paar Konstanten Deklarationen o.g. Funktionen, wichtige Strukturen, ein paar Konstanten Einbindung mit: Einbindung mit: #include #include

Wizards & Builders GmbH Parameterübergabe Übergabe Adresse Parameterblock Übergabe Adresse Parameterblock Enthält Anzahl der Parameter und je Parameter ein Strukturelement mit dem jeweiligen Wert, Ausnahmen: Enthält Anzahl der Parameter und je Parameter ein Strukturelement mit dem jeweiligen Wert, Ausnahmen: Referenz-Parameter kommt als Pointer Referenz-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 & Builders GmbH Werterückgabe Deklaration als void oder void far - also keine direkten Funktionsresultate Deklaration als void oder void far - also keine direkten Funktionsresultate Stattdessen Werterückgabe via Funktionsaufruf: Stattdessen Werterückgabe via Funktionsaufruf: _RetChar() _RetChar() _RetCurrency() _RetCurrency() _RetDateStr() _RetDateStr() _RetDateTimeStr() _RetDateTimeStr() _RetFloat() _RetFloat() _RetInt() _RetInt() _RetLogical() _RetLogical() _RetVal() _RetVal() void EineFunktion(ParamBlk *parm) { _RetChar( "Rückgabe an FoxPro" ); }

Wizards & Builders GmbH Parameterarten, Funktionen Parameterarten: - kein Parameter- kein Parameter C- Charakter C- Charakter D- Datum D- Datum I- Integer I- Integer L- Logisch L- Logisch N- Numerisch N- Numerisch R- Referenz R- Referenz T- DateTime T- DateTime Y- Währung Y- Währung O- Objekt O- Objekt Feste Funktionen: INTERNAL INTERNAL interne Funktion interne Funktion CALLONLOAD CALLONLOAD Aufruf beim Laden Aufruf beim Laden CALLONUN-LOAD CALLONUN-LOAD Aufruf beim Entladen (kein Par.) Aufruf beim Entladen (kein Par.)

Wizards & Builders GmbH FOXINFO-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: FPFI Pointer, Type-Cast aus PRO_EXT.H: FPFI Maximalzahl der Parameter Maximalzahl der Parameter Typ der Parameter (CSV-Liste,. = opt.) Typ der Parameter (CSV-Liste,. = opt.) Beispiel: Beispiel: FoxInfo myFoxInfo[] = { {"VFPFUNKTION",(FPFI) EineFunktion, 2, "I,.C"}, };

Wizards & Builders GmbH FOXTABLE-Struktur Die eigentliche Verbindung zu FoxPro wird über die Struktur FoxTable hergestellt. FoxPro sucht beim Laden einer FLL diese Struktur und entnimmt ihr alle erforderlichen Informationen. Die eigentliche Verbindung zu FoxPro wird über die Struktur FoxTable hergestellt. FoxPro sucht beim Laden einer FLL diese Struktur und entnimmt ihr alle erforderlichen Informationen. FoxTable _FoxTable = { (FoxTable *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo }; Die Sizeof-Berechnungen dienen nur der (dadurch auch bei Strukturänderungen immer korrekten) Berechnung der Anzahl der Einträge innerhalb der FoxInfo-Struktur, m.a.W. der Anzahl der exportierten Funktionen

Wizards & Builders GmbH Template für C / C++ l void Internal_Name(ParamBlk *parm) { // function code goes here. } FoxInfo myFoxInfo[] = { {"FUNC_NAME", (FPFI) Internal_Name, 0, ""}, }; extern "C {<== für C++ FoxTable _FoxTable = { (FoxTable *)0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo }; } <== für C++

Wizards & Builders GmbH Vor-/Nachteile von FLLs Vorteile: Alle Funktionen von VFP in C verfügbar (seek, wait wind usw.) Alle Funktionen von VFP in C verfügbar (seek, wait wind usw.) Keine Deklaration notwendig (Direkt- aufruf möglich) Keine Deklaration notwendig (Direkt- aufruf möglich)Nachteile: Können nur von FoxPro verwendet werden Können nur von FoxPro verwendet werden FLL ohne Rückgabe kann mit Rückgabe deklariert werden (Endung als DLL) FLL ohne Rückgabe kann mit Rückgabe deklariert werden (Endung als DLL)

Wizards & Builders GmbH FoxPro-API-Bibliothek Die API-Bibliothek von Microsoft Visual FoxPro

Wizards & Builders GmbH API-Bibliothek (1) _Activate _Activate _Alloc (Speicher) _Alloc (Speicher) _DB (*) (Datenbank) _DB (*) (Datenbank) _Deactivate _Deactivate _Dialog (Message) _Dialog (Message) _Dispose (Löschen) _Dispose (Löschen) _Ed (*) (Editor) _Ed (*) (Editor) _Error/_ErrorInfo _Error/_ErrorInfo _Evaluate (!) _Evaluate (!) _Execute (!) _Execute (!) _F (*) (LowLevel) _F (*) (LowLevel) _Find (Objektsuche) _Find (Objektsuche) _Free (Freigabe) _Free (Freigabe) _Get (Information) _Get (Information)

Wizards & Builders GmbH API-Bibliothek (2) _GetItem (Handle) _GetItem (Handle) _Global (Variablen) _Global (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 & Builders GmbH API-Datentypen EDLINE- Zeilennummer Editfenster EDLINE- Zeilennummer Editfenster EDPOS- Zeichenposition dito EDPOS- Zeichenposition dito FCHAN- Low-Level-File-Handle FCHAN- Low-Level-File-Handle FPFI- Funktionspointer (Integer) FPFI- Funktionspointer (Integer) ITEMID- Identifier Menüeintrag ITEMID- Identifier Menüeintrag MENUID- Identifier Menü MENUID- Identifier Menü MHANDLE- Identifier Speicherblock MHANDLE- Identifier Speicherblock NTI- Name-Table-Index NTI- Name-Table-Index WHANDLE- Fenster-Handle WHANDLE- Fenster-Handle

Wizards & Builders GmbH API-Datenstrukturen EventRec- Ereignisstruktur EventRec- Ereignisstruktur FoxInfo- siehe oben FoxInfo- siehe oben FoxTable- siehe oben FoxTable- siehe oben Locator- Übergabe Parameter Locator- Übergabe Parameter ParamBlk- siehe oben ParamBlk- siehe oben Parameter- Übergabe Parameter Ref. Parameter- Übergabe Parameter Ref. Point- Koordinaten Point- Koordinaten Rect- Koordinaten Rechteck Rect- Koordinaten Rechteck Value- Übergabe Parameter Wert Value- Übergabe Parameter Wert

Wizards & Builders GmbH API-Variablen-Zugriff NTI = Name Table Index (Array) NTI = Name Table Index (Array) _NameTableIndex( ) für Suche _NameTableIndex( ) für Suche _Load( )= Lesen _Load( )= Lesen _Store( )= Schreiben _Store( )= Schreiben _NewVar( )= neue Variable _NewVar( )= neue Variable _Release( )= Variable löschen _Release( )= Variable löschen

Wizards & Builders GmbH API-Speicher-Zugriff Speicherzugriff über Handles Speicherzugriff über Handles Handle ist ein Index in ein Array von Pointer auf Speicher Handle ist ein Index in ein Array von Pointer 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 & Builders GmbH Fragestellungen Auswahl und Einsatz von FLLs Auswahl und Einsatz von FLLs Auswahl und Einsatz von DLLs Auswahl und Einsatz von DLLs Einsatz von WIN-API- Funktionen Einsatz von WIN-API- Funktionen Selbsterstellung von FLLs mit API Selbsterstellung von FLLs mit API

Wizards & Builders GmbH Vielen Dank! Das waren die Themen: Arbeiten mit FLLs Arbeiten mit FLLs Library, FoxTools- Übersicht, Probleme Library, FoxTools- Übersicht, Probleme Arbeiten mit DLLs Arbeiten mit DLLs Deklaration, Parameter-übergabe, FILER /OLE Deklaration, Parameter-übergabe, FILER /OLE WinAPI-Funktionen WinAPI-Funktionen Fenster, System, I/O, INI/Registry, Netzwerk/User, Sonstige Fenster, System, I/O, INI/Registry, Netzwerk/User, Sonstige Variablenzuordnung, Übernahme, Wertebereiche Variablenzuordnung, Übernahme, Wertebereiche Erstellen von FLLs Erstellen von FLLs Dateien, Werteübergabe, Werterückgabe, FOXINFO, FOXTABLE, API-Bibliothek, Vor/Nachteile Dateien, Werteübergabe, Werterückgabe, FOXINFO, FOXTABLE, API-Bibliothek, Vor/Nachteile FoxPro-API-Bibliothek FoxPro-API-Bibliothek API-Bibliothek, Typen, Strukturen, Variablen, Speicherzugriff API-Bibliothek, Typen, Strukturen, Variablen, Speicherzugriff

Wizards & Builders GmbH Wenn Fragen bestehen: Wizards & Builders Methodische Software- Entwicklung GmbH Frankfurter Str. 21b Kronberg Tel.: Fax: CIS: ,175