|
Manchmal braucht man einfach den tatsächlichen Farbwert, der
sich hinter den Konstanten für die Systemfarben (vbButtonFace,
vbWindowText, vbWindowBackground usw.) verbirgt. Auch können viele
API-Funktionen mit diesen Konstanten nichts anfangen, sondern
erwarten einen regulären RGB-Farbwert.
Die API-Funktion OleTranslateColor
"übersetzt" den RGB-Wert zu einer Systemfarben-Konstanten
auf kürzestem Weg.
Declare Function OleTranslateColor Lib "oleaut32.dll" _
(ByVal lOleColor As Long, ByVal lHPalette As Long, _
ByRef lColorRef As Long) As Long
Im ersten Parameter übergeben Sie die zu übersetzende Farbe,
den gewünschten Farbwert erhalten Sie im letzten Parameter zurück.
Den mittleren Parameter (lHPalette) können Sie ignorieren, d.h.
0& übergeben. Nach einem erfolgreichen Aufruf der Funktion ist
der Rückgabewert 0. Ein Beispiel:
Dim nColor As Long
OleTranslateColor vbWindowText, 0&, nColor
Debug.Print nColor
Wenn Sie anstelle des Rückgabeparameters lieber einen
Funktionsaufruf verwenden wollen, verpacken Sie die API-Funktion in
eine eigene kleine Funktion:
Function OleConvertColor(ByVal Color As Long) As Long
Dim nColor As Long
OleTranslateColor Color, 0&, nColor
OleConvertColor = nColor
End Function
 |
Die Funktion OleConvertColor liefert den
einer Systemfarb-Konstanten entsprechenden RGB-Farbwert

|
Sie brauchen vor dem Aufruf von OleTranslateColor nicht zu
prüfen, ob die gegebene Farbe eine Systemfarbenkonstante oder
bereits einen regulären RGB-Farbwert darstellt. Wird
OleTranslateColor ein RGB-Farbwert übergeben, wird schlicht dieser
Farbwert wieder zurückgegeben.
|