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