| |
|
|
| KompilierenMarqueSéparationSource wurde am 15.07.2007 aus der MMJ-Quellcodesammlung (Dietmar Horn) in die Babyklappe auf XProfan.Com abgelegt:
Externe Funktionen aus 32-Bit-DLLs nutzen
DLL-TEST 32-Bit (macht eigentlich nichts sinnvolles ...)
===============
Demo zur Nutzung externer Funktionen aus 32-Bit-DLLs
externe Funktionen (hier: Windows-API) definieren:
Hinter dem DEF folgt wie gewohnt der freigewählte Name (der natürlich
keinem Namen einer PROFAN²-Funktion entsprechen darf) und in
Klammern die Anzahl der Parameter (max. 12) der neuen Funktion.
Dann folgt gekennzeichnet durch ein vorangestelltes ! ein String
mit dem Namen der DLL und der Name der Funktion in der DLL (Groß-/Klein-
schreibung beachten.
def MoveWindow(6) !USER32,MoveWindow
def waveOutGetNumDevs(0) !WINMM,waveOutGetNumDevs
def GetWText(3) !User32,GetWindowTextA
def GetApiPixel(3) !GDI32,GetPixel
def GetClientRect(2) !USER32,GetClientRect
Variablen declarieren
Declare TRect#,Text#
Bereichsvariablen für von externer Funktion zu übernehmender
Datenstrukturen dimensionieren
Dim TRect#,16
Dim Text#,40
TrueColor einstellen, Bildschirm in Standardgröße mit
Hintergrundfarbe erstellen. Schriftfarbe einstellen
SetTrueColor 1
cls 65280
color 2,10
Fenstergröße und Position einstellen (1 = anzeigen)
MoveWindow(%HWnd,20,20,500,400,1)
Anzahl der WAVE-Ausgabegeräte feststellen (in der Regel bei
einer Soundkarte 1, ohne Soundkarte 0)
print Wave-Ausgabegeräte: ;waveOutGetNumDevs()
Länge des Fenstertitels ermitteln und den Text des Titels
in Text# einlesen. Die 40 stellt die Anzahl der maximal zu lesenden
Zeichen dar und entspricht der Größe der Bereichsvariablen.
print
print
string Text#,0 = Hier war Hugo!
print Länge des Titels: ;GetWText(%HWnd,Text#,40)
print
print Der Fenstertitel: ;string$(Text#,0)
Hintergrundfarbe ermitteln
print
print Die Hintergrundfarbe: ;GetApiPixel(%HDC,100,100)
Größe des Client-Bereiches (Fensterbereich innerhalb des Rahmens)
ermitteln. Sie wird in die Datenstruktur TRect# geschrieben, die in
vier LongInt-Werten (16 Bytes) die Koordinaten der linken oberen Ecke (hier
natürlich 0,0) und die X- und Y-Ausdehnung enthält. Der erste
Wert steht an Position 0 in der Bereichsvariable, der zweite an Position
4, ... (jeder Wert belegt 4 Bytes).
print
GetClientRect(%HWnd,TRect#)
print
print Größe des Fenster-Client:
print
print Breite: ;long(TRect#,8)
print
print Höhe: ;long(TRect#,12)
Auf Ereignis warten und Tschüß
waitinput
messagebox(Fertig!,,0)
href='./../../funktionsreferenzen/XProfan/end/'>end
|
|
|
| |
|
|