auxmoney - Geld leihen für das Studiumauxmoney - Geld leihen für das Studium

auxmoney - Geld leihen für den Umzugauxmoney - Geld leihen für den Umzug

Unregelmäßig geformte Fenster

Unregelmäßig geformte Fenster via CreateEllipticRgn, CreateRectRgn, CreateRoundRectRgn, CreatePolygonRgn, CombineRgn
Prozedur im Modul
Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, _
ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, _
ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Public Sub ChangeWindowShape(WindowhWnd As Long)
SetWindowRgn WindowhWnd, CreateEllipticRgn(0, 0, 100, 100), True
End Sub Für eine Ellipse nimmt man ungleiche Werte:
(0, 0, 200, 100), True
Setzt man den Boolschen Wert auf False, kann man
das runde Fenster (an der Titelleiste mit der Maus
fassen und bewegen) raustrennen:
SetWindowRgn WindowhWnd, _
CreateEllipticRgn(0, 0, 100, 100), False
Prozedur im Formular
Private Sub cmdRundesFenster_Click()
ChangeWindowShape Me.hWnd
End Sub
   
Microsoft hat einige API-Funktionen, um den Bedürfnissen nach unregelmäßig geformten Fenstern nachzukommen.
Mit diesen Funktionen lassen sich Regionen in der Form von Kreisen, Rechtecken, Elipsen und Polygonen
erzeugen. Eine Kombination dieser Geometrien ist möglich.
Funktion Beschreibung
CreateEllipticRgn Region in elliptischer Form
CreateRectRgn Region in rechteckiger Form
CreateRoundRectRgn Region in rechteckiger Form mit abgerundeten Ecken
CreatePolygonRgn Region in polygonaler Form; dazu wird ein Punkte-Array benötigt.
CombineRgn Kombiniert mehrere Regionen
SetWindowRgn Weist eine Region einem Fenster-Handle zu
Des Weiteren gibt es noch einige Flags, die definieren, wie die Regionen kombiniert werden. Dadurch können komplexere
Regionen zusammengestellt werden. Dabei muss man zwischen zwei Möglichkeiten unterscheiden: die Addition und die
Subtraktion von Regionen.
Bei der Addition werden zwei Regionen miteinander vereint; bei der Subtraktion wird eine Region aus der anderen
herausgeschnitten.
Flag Beschreibung
RGN_AND = 1 Verbindet die überlappenden Bereiche zweier Regionen
RGN_OR = 2 Verbindet zwei Regionen
RGN_XOR = 3 Verbindet zwei Regionen und entfernt überlappende Bereiche
RGN_DIFF = 4 Bereiche von Region 1, die nicht Teil von Region 2 sind
RGN_COPY = 5 Erzeugt eine Kopie von Region 1
Private Declare Function CreateEllipticRgn Lib "gdi32" _
(ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, _
ByVal Y2 As Long) As Long
Private Declare Function CreateRoundRectRgn Lib "gdi32" _
(ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, _
ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long
Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn _
As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, _
ByVal nCombineMode As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd _
As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Const RGN_OR = 2
Dim MStartX, MStartY
Private Sub Form_Load()
Dim GesamtRgn As Long
Dim RegionA As Long
Dim RegionB As Long
Dim tmp As Long
'Erzeugen der Regionen
RegionB = CreateEllipticRgn(0, 0, 100, 100)
RegionA = CreateRoundRectRgn(90, 0, 150, 101, 10, 10)
'Regionen kombinieren
GesamtRgn = RegionA
tmp = CombineRgn(GesamtRgn, GesamtRgn, RegionB, RGN_OR)
'auf Formular anwenden
tmp = SetWindowRgn(Me.hwnd, GesamtRgn, True)
End Sub
Private Sub cmdExit_Click()
End
End Sub
' Zum Verschieben des Formulars
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
MStartX = X
MStartY = Y
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
Dim PosX, PosY
If Button = 1 Then
If MStartX = -1 Or MStartY = -1 Then Exit Sub
PosX = Me.Left + (X - MStartX)
PosY = Me.Top + (Y - MStartY)
Me.Move PosX, PosY
End If
End Sub
Siehe auch "Formular mit runden Ecken" auf: http://www.wbrnet.info/db/0516.html
Sponsoren und Investoren

Sponsoren und Investoren sind jederzeit herzlich willkommen!
Wenn Sie die Information(en) auf dieser Seite interessant fanden, freuen wir uns über eine kleine Spende. Empfehlen Sie uns bitte auch in Ihren Netzwerken (z. B. Twitter, Facebook oder Google+). Herzlichen Dank!

Nach oben Sitemap
Impressum & Kontakt