Wie man Formen mit runden Ecken erstellt, haben wir bereits mehrfach beschrieben. Heute möchten wir Ihnen zeigen, wie man die Ecken des WebBrowser-Controls abrunden kann. Die Schwierigkeit besteht hierbei eindeutig beim Ermitteln des Fensterhandles des WebBrowser-Controls, was ab sofort aber mit nachfolgender Funktion kein Problem mehr sein sollte. Option Explicit ' Benötigte API-Deklarationen Private Declare Function GetClassName Lib "user32" _ Alias "GetClassNameA" ( _ ByVal hWnd As Long, _ ByVal lpClassName As String, _ ByVal nMaxCount As Long) As Long Private Declare Function GetWindow Lib "user32" ( _ ByVal hWnd As Long, _ ByVal wCmd As Long) As Long Private Const GW_HWNDNEXT = 2 Private Const GW_CHILD = 5 ' Ermittelt das Fensterhandle des WebBrowser-Controls ' ' Erwartet wird zunächst das Handle der Form, auf dem ' sich das WebBrowser-Control befindet Public Function GetWebBrowserHWnd( _ ByVal hWndMain As Long) As Long Dim hWnd As Long Dim sClassName As String Dim nResult As Long ' Alle Child-Windows der MainForm durchlaufen und ' nach dem Klassennamen "Shell Embedding" suchen ' Wenn wir einen solchen Klassennamen finden, ' haben wir das gesuchte Fensterhandle. hWnd = GetWindow(hWndMain, GW_CHILD) Do While hWnd <> 0 ' Klassennamen ermitteln... sClassName = Space$(256) nResult = GetClassName(hWnd, sClassName, Len(sClassName)) ' ... und prüfen... sClassName = Left$(sClassName, nResult) If sClassName = "Shell Embedding" Then ' ... und gefunden GetWebBrowserHWnd = hWnd Exit Do End If ' Nächstes Child-Window ermitteln hWnd = GetWindow(hWnd, GW_HWNDNEXT) Loop End Function Hat man erst einmal das Fensterhandle des WebBrowser-Control lassen sich die Ecken ganz einfach abrufen ' Benötigte API-Deklarationen 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 SetWindowRgn Lib "user32" ( _ ByVal hWnd As Long, _ ByVal hRgn As Long, _ ByVal bRedraw As Boolean) As Long Private Sub Form_Load() Dim x As Long Dim y As Long Dim n As Long Dim nHWnd As Long ' WindowHandle des WebBrowser-Controls nHWnd = GetWebBrowserHWnd(Me.hWnd) ' Ecken abrunden With WebBrowser1 x = .Width / Screen.TwipsPerPixelX y = .Height / Screen.TwipsPerPixelY ' Legt die Stärke der Rundung fest n = 20 SetWindowRgn nHWnd, _ CreateRoundRectRgn(0, 0, x, y, n, n), True End With End Sub Anmerkung: Dieser Tipp wurde bereits 12.357 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 Neu! sevEingabe 3.0 Einfach stark! Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |