Rubrik: HTML/Internet/Netzwerk · WebBrowser | VB-Versionen: VB4, VB5, VB6 | 25.06.04 |
WebBrowser mit abgerundeten Ecken Dieser Tipp zeigt, wie sich die Ecken des WebBrowser-Controls etwas abrunden lassen. | ||
Autor: Dieter Otter | Bewertung: | Views: 12.370 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
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:
Das Abrunden der Ecken lässt sich im Übrigen auf alle Controls anwenden, die ein FensterHandle besitzen.