home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Programming Tool Box
/
SIMS_2.iso
/
bp_6_93
/
vbwin
/
gfadll
/
vbtest.txt
< prev
Wrap
Text File
|
1993-01-05
|
4KB
|
122 lines
REM Datei: VBTEST.DLL
REM Typ: dynamische Link-Bibliothek fⁿr Visual Basic fⁿr Windows
REM Sprache: GFA Basic fⁿr Windows (Compiler)
REM Aufgabe: Einfⁿhrung in die Grundlagen der DLL-Programmierung
REM fⁿr Visual Basic fⁿr Windows mit GFA Basic fⁿr Windows
REM Autor: Dipl.-Ing. Andreas Maslo
REM (c)1993: IngES
$library VBTEST
$LNK EXE VBTEST.DLL
PROCEDURE LibMain(inst&, dat&, hpsz, cmd%)
//diese Prozedur wird automatisch beim Laden der DLL aufgerufen
IF VB:VERSION = 0
ALERT 3,"Die DLL VBTEST.DLL ist nur von Visual Basic fⁿr Windows nutzbar!",1,"OK",x&
RETVAL 0
ELSE
RETVAL 1
ENDIF
RETURN
PROCEDURE IntegerTest()
//Prozedur exportieren
//Routinen innerhalb von DLLs werden ⁿber den exportierten
//Namen und nicht ⁿber den Namen innerhalb des Prozedur-
//kopfes aufgerufen; beide Namen k÷nnen sich voneinander
//unterscheiden
$EXPORT IntegerTest
//Ganzzahlwert an aufrufendes Programm zurⁿckgeben
RETVAL 5
//Hinweis: diese Prozedur mu▀ als Funktion deklariert werden
RETURN
PROCEDURE ReferenceTest(VAR Ergebnis)
//VAR = Call By Reference, um Werte ⁿber Parameterlisten
//an das aufrufende Hauptprogramm zurⁿckzugeben
$EXPORT ReferenceTest
Ergebnis=1.23456
RETVAL 0
RETURN
//Beachten Sie, da▀ eine Stringⁿbergabe an Visual Basic in
//der nachfolgenden Form NICHT m÷glich ist, da Strings
//anders als unter GFA-Basic verwaltet werden
//PROCEDURE StringTest(VAR Test$)
// $EXPORT StringTest
// Test$="Test"
// RETVAL 0
//RETURN
PROCEDURE StringTest(Text%)
//Text als Zeiger von VB ⁿbernehmen, in einen String
//umwandeln und ausgeben
$EXPORT StringTest
'Zeichenkette ⁿber Pointer einlesen und anzeigen;
'CHAR wandelt Pointer in Zeichenkette um
MESSAGE CHAR{Text%}, "VBTEST.DLL",MB_OK, x&
//Zeichenkette in Gro▀buchstaben konvertieren und
//an aufrufendes Programm zurⁿckⁿbergeben
Temp$ = CHAR{Text%}
Temp$= UCASE$(Temp$)
//Hinweis: Beachten Sie, da▀ die LΣnge der durch
// den Pointer ⁿbergebenen Zeichenkette nicht
// mit POKE$ erweitert werden kann!
// Unter UmstΣnden mu▀ die Zeichenkette mit
// Space$() oder String$() bereits in VB auf die
// maximal ben÷tigte ZeichenkettenlΣnge ge-
//bracht werden
POKE$ Text%, Temp$
RETURN
PROCEDURE ColorDialog()
//Beispielprozedur:
//Auswahldialog Farben mit Farbdefinition
$Export ColorDialog
Col%=RGB(0,0,0)
IF DIM?(a%())=0 THEN
//beim ersten Aufruf noch nicht dimensioniert
DIM a%(15)
//wird beim 2. Aufruf eine neue Dimensionierung
//vorgenommen, kommt es zum Programmabbruch
//durch einen Laufzeitfehler
ENDIF
DLG COLOR 1,0,a%(),Col%
//Farbwert zurⁿckgeben
RETVAL Col%
RETURN
PROCEDURE WinDirectory(WinDir%)
//Beispiel zum Aufruf einer Windows-API-Routine
//(entspricht dem Aufbau innerhalb von VB)
//Windows-Pfad ermitteln
$Export WinDirectory
//Puffer fⁿr Ergebnis bereitstellen
Buffer$=SPACE$(255)
//API-Routine aufrufen
P%=GetWindowsDirectory(V:Buffer$, LEN(Buffer$))
POKE$ WinDir%, CHAR{V:Buffer$}
'PfadlΣnge als Funktionswert zurⁿckgeben
RETVAL P%
RETURN
PROCEDURE Choose(M%)
//Popup-Menⁿ ausgeben, ohne die MenⁿeintrΣge
//ⁿber das VB-Menⁿentwurfsfenster definieren zu mⁿssen
$Export Choose
//Fenstertitel, MenⁿeintrΣge in der Form:
//A$="Titel|Eintrag 1|Eintrag2|...|&Ende"
//wird hier als Pointer ⁿbergeben
Aufbau$ = CHAR{M%}
//ein Fenster mu▀ unter GFA-Basic gew÷ffnet werden,
//damit das Popup-Menⁿ erscheint
//Rechteck unterhalb des Popup-Menⁿs zeichnen, damit
//das Fenster selbst nicht sichtbar wird
OPENW #1, 110,110,20,20, 0
Wahl&=POPUP(Aufbau$, 110,110 , 0)
//und wieder schlie▀en
CLOSEW #1
RETVAL Wahl&
RETURN