In diesem Tutorial wird in groben Zügen erklärt wie man
API-Funktionen in VisualBasic 6 ein rundes Fenster mit Loch erzeugen
kann.
Dazu sind Folgende API-Funktionen notwendig:
|
Code: |
1:Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As
:Long, ByVal Y2 As Long) As Long
2:Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2
: As Long, ByVal Y2 As Long) As Long
3:Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByV
:al hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
4:Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bR
:edraw As Boolean) As Long
|
1: CreateRectRgn: Wird benutzt um ein Rechteck zu "erstellen". Als
Übergabewerte wird der obere linke und der untere rechte Punkt
angegeben.
bsp:
|
Code: |
1:Rechteck = CreateRectRgn(0, 0, 100, 100)
|
2: CreateEllipticRgn: Wird benutzt um eine Ellipse zu erstellen. Als
Übergabewerte werden die Eckpunkte des Rechteckes angegeben, welches
die Ellipse umfasst.
|
Code: |
1:Elipse = CreateEllipticRgn(0, 0, 1000, 1000)
|
3: CombineRgn : Wird verwendet um zwei Figuren zu kombinieren. Die
Übergabewerte sind im folgenden Codestück ausgeschrieben:
|
Code: |
1:CombineRgn Ausgabe, Eingabe1, Eingabe2, Kombinationsmethode
|
Die "Ausgabe" muss im richtigen Format vorliegen, deshalb speichere
ich im Normalfall vorher eine "Dummy-Variable". Eingabe1 & 2
sind die beiden "Figuren" die kombiniert werden sollen.
die "Kombinationsmethode" gibt an wie die Figuren
kombiniert werden sollen. Es stehen folgende Möglichkeiten zur
Auswahl:
1 für die "Schnittmenge" der beiden Figuren
2 um die beiden Figuren zu "addieren"
3 für ein ausschliessendes "Oder" (die beiden Figuren ohne die
Schnittmenge)
4 für Eingabe1 ohne Eingabe 2
4: SetWindowRgn: Die letzte API wird dazu gebraucht um auf ein
Fenster die neue "Form" anzuwenden.
|
Code: |
1:SetWindowRgn hWnd, Figur, Redraw
|
Das erste Argument ("hWnd") ist ist das Handle des Fensters.
Mit diesem kann Windows die einzelnen Fenster und Objekte
ansprechen. Es ist im Normalfall ein Integer. In VisualBasic ist
hWnd eine Eigenschaft des Fensters (Forms).
"Figur" enthält eine der zuvor kreierten
Figuren oder eine Kombination.
"Redraw" sollte "True" sein, es sei den man will das
Fenster manuell erneuern ("refresh" ausführen).
Dazu ein Beispielprogramm (mit Quelltext):
Quelltext:
http://www.black-silence.ch/tuts/VB/vb3/screen-fresser.zip
Kompiliert:
http://www.black-silence.ch/tuts/VB/vb3/futter.exe
Der Code eignet sich um Leute zu erschrecken oder für spezielle "About-Dialoge",
etc. Falls noch fragen sind, postet
im Gästebuch oder schickt mir eine Email:
webmaster'at'black-silence'dot'ch
|