Seit Windows 98 (und in Windows ME, 2000 und XP) können die Titelleisten eines Fensters (Forms) einen Farbverlauf enthalten. Doch obwohl Visual Basic 6 etwa zur gleichen Zeit erschienen ist, werden dennoch keine Konstanten für diese Systemfarben angeboten. Zwar könnten Sie im Prinzip die fehlenden Konstanten für die jeweilige Endfarbe des Verlaufs einer aktiven und einer inaktiven Titelleiste nach dem gleichen Schema, das den VB-eigenen Systemfarben-Konstanten zugrunde liegt, konstruieren:
vbKonstante = &H8000000 + API_Systemfarben_Index
Doch leider werden die sich so ergebenden Werte von VB nicht erkannt und akzeptiert. Immerhin können Sie aber über die API-Funktion GetSysColor und dem API-Systemfarben-Index den tasächlichen RGB-Farbwert der Farben ermitteln:
Private Declare Function GetSysColor Lib "user32" _
(ByVal nIndex As Long) As Long
Public Property Get ActiveTitleBarGradientColor() As Long
Const COLOR_GRADIENTACTIVECAPTION = 27
ActiveTitleBarGradientColor = _
GetSysColor(COLOR_GRADIENTACTIVECAPTION)
End Property
Public Property Get InactiveTitleBarGradientColor() As Long
Const COLOR_GRADIENTINACTIVECAPTION = 28
InactiveTitleBarGradientColor = _
GetSysColor(COLOR_GRADIENTINACTIVECAPTION)
End Property
Zum Malen eines Farbverlaufs brauchen Sie sowieso den RGB-Wert und müssen sogar noch den tatsächlichen Farbwert der Anfangsfarben ermitteln ( "Systemfarben-Dolmetscher"). Die Änderung der Farben durch den Anwender in den Bildschirmeigenschaften können Sie sofort berücksichtigen und in der Darstellung des Verlaufs nachvollziehen, da bei allen entsprechenden Objekten (Form, PictureBox, UserControl usw.) das Paint-Ereignis ausgelöst wird.
|