home *** CD-ROM | disk | FTP | other *** search
/ Programming Tool Box / SIMS_2.iso / bp_6_93 / vbwin / gfadll / vbtest.txt < prev   
Text File  |  1993-01-05  |  4KB  |  122 lines

  1. REM Datei:      VBTEST.DLL
  2. REM Typ:        dynamische Link-Bibliothek fⁿr Visual Basic fⁿr Windows
  3. REM Sprache: GFA Basic fⁿr Windows (Compiler)
  4. REM Aufgabe: Einfⁿhrung in die Grundlagen der DLL-Programmierung
  5. REM                fⁿr Visual Basic fⁿr Windows mit GFA Basic fⁿr Windows
  6. REM Autor:      Dipl.-Ing. Andreas Maslo
  7. REM (c)1993:   IngES
  8.  
  9. $library VBTEST
  10. $LNK EXE VBTEST.DLL
  11.  
  12. PROCEDURE LibMain(inst&, dat&, hpsz, cmd%)
  13.   //diese Prozedur wird automatisch beim Laden der DLL aufgerufen
  14.   IF VB:VERSION = 0
  15.     ALERT 3,"Die DLL VBTEST.DLL ist nur von Visual Basic fⁿr Windows nutzbar!",1,"OK",x&
  16.     RETVAL 0
  17.   ELSE
  18.     RETVAL 1
  19.   ENDIF
  20. RETURN
  21.  
  22. PROCEDURE IntegerTest()
  23.   //Prozedur exportieren
  24.   //Routinen innerhalb von DLLs werden ⁿber den exportierten
  25.   //Namen und nicht ⁿber den Namen innerhalb des Prozedur-
  26.   //kopfes aufgerufen; beide Namen k÷nnen sich voneinander
  27.   //unterscheiden
  28.   $EXPORT IntegerTest
  29.   //Ganzzahlwert an aufrufendes Programm zurⁿckgeben
  30.   RETVAL 5
  31.   //Hinweis: diese Prozedur mu▀ als Funktion deklariert werden
  32. RETURN
  33.  
  34. PROCEDURE ReferenceTest(VAR Ergebnis)
  35.   //VAR = Call By Reference, um Werte ⁿber Parameterlisten
  36.   //an das aufrufende Hauptprogramm zurⁿckzugeben
  37.   $EXPORT ReferenceTest
  38.   Ergebnis=1.23456
  39.   RETVAL 0
  40. RETURN
  41.  
  42. //Beachten Sie, da▀ eine Stringⁿbergabe an Visual Basic in
  43. //der nachfolgenden Form NICHT m÷glich ist, da Strings
  44. //anders als unter GFA-Basic verwaltet werden
  45. //PROCEDURE StringTest(VAR Test$)
  46. //  $EXPORT StringTest
  47. //  Test$="Test"
  48. //  RETVAL 0
  49. //RETURN
  50.  
  51. PROCEDURE StringTest(Text%)
  52.   //Text als Zeiger von VB ⁿbernehmen, in einen String
  53.   //umwandeln und ausgeben
  54.   $EXPORT StringTest
  55.   'Zeichenkette ⁿber Pointer einlesen und anzeigen;
  56.   'CHAR wandelt Pointer in Zeichenkette um
  57.   MESSAGE CHAR{Text%}, "VBTEST.DLL",MB_OK, x&
  58.   //Zeichenkette in Gro▀buchstaben konvertieren und
  59.   //an aufrufendes Programm zurⁿckⁿbergeben
  60.   Temp$ = CHAR{Text%}
  61.   Temp$= UCASE$(Temp$)
  62.   //Hinweis: Beachten Sie, da▀ die LΣnge der durch
  63.   //  den Pointer ⁿbergebenen Zeichenkette nicht
  64.   //  mit POKE$ erweitert werden kann!
  65.   //  Unter UmstΣnden mu▀ die Zeichenkette mit
  66.   //  Space$() oder String$() bereits in VB auf die
  67.   //  maximal ben÷tigte ZeichenkettenlΣnge ge-
  68.   //bracht werden
  69.   POKE$ Text%, Temp$
  70. RETURN
  71.  
  72. PROCEDURE ColorDialog()
  73.   //Beispielprozedur:
  74.   //Auswahldialog Farben mit Farbdefinition
  75.   $Export ColorDialog
  76.   Col%=RGB(0,0,0)
  77.   IF DIM?(a%())=0 THEN
  78.     //beim ersten Aufruf noch nicht dimensioniert
  79.     DIM a%(15)
  80.     //wird beim 2. Aufruf eine neue Dimensionierung
  81.     //vorgenommen, kommt es zum Programmabbruch
  82.     //durch einen Laufzeitfehler
  83.   ENDIF
  84.   DLG COLOR 1,0,a%(),Col%
  85.   //Farbwert zurⁿckgeben
  86.   RETVAL Col%
  87. RETURN
  88.  
  89. PROCEDURE WinDirectory(WinDir%)
  90.   //Beispiel zum Aufruf einer Windows-API-Routine
  91.   //(entspricht dem Aufbau innerhalb von VB)
  92.   //Windows-Pfad ermitteln
  93.   $Export WinDirectory
  94.   //Puffer fⁿr Ergebnis bereitstellen
  95.   Buffer$=SPACE$(255)
  96.   //API-Routine aufrufen
  97.   P%=GetWindowsDirectory(V:Buffer$, LEN(Buffer$))
  98.   POKE$ WinDir%, CHAR{V:Buffer$}
  99.   'PfadlΣnge als Funktionswert zurⁿckgeben
  100.   RETVAL P%
  101. RETURN
  102.  
  103. PROCEDURE Choose(M%)
  104.   //Popup-Menⁿ ausgeben, ohne die MenⁿeintrΣge
  105.   //ⁿber das VB-Menⁿentwurfsfenster definieren zu mⁿssen
  106.   $Export Choose
  107.   //Fenstertitel, MenⁿeintrΣge in der Form:
  108.   //A$="Titel|Eintrag 1|Eintrag2|...|&Ende"
  109.   //wird hier als Pointer ⁿbergeben
  110.   Aufbau$ = CHAR{M%}
  111.   //ein Fenster mu▀ unter GFA-Basic gew÷ffnet werden,
  112.   //damit das Popup-Menⁿ erscheint
  113.   //Rechteck unterhalb des Popup-Menⁿs zeichnen, damit
  114.   //das Fenster selbst nicht sichtbar wird
  115.   OPENW #1, 110,110,20,20, 0
  116.   Wahl&=POPUP(Aufbau$, 110,110 , 0)
  117.   //und wieder schlie▀en
  118.   CLOSEW #1
  119.   RETVAL Wahl&
  120. RETURN
  121.  
  122.