Visual Basic includes constants, such as vbActiveTitleBar and vbButtonFace, for Windows system colors, which the user might change through the Control Panel. (In VB3, these constants are defined in the file CONSTANT.TXT.) When you assign one of these constants to a VB color property, Visual Basic automatically translates it to the actual color the user has chosen for that item. You cannot, however, use VB’s system color constants directly with API functions, such as SetPixel, that expect a color as one of their parameters. VB’s system color constants are the same as those defined by the Windows API, except that VB’s constants have the high bit set. You can use this function to translate both VB and Windows system color constants into the corresponding RGB color value, suitable for use in API calls:
' 32-bitOption ExplicitDeclare Function GetSysColor Lib "User32" ( _ ByVal nIndex As Long) As LongPublic Function SysColor2RGB(ByVal lColor As Long) As Long lColor = lColor And (Not &H80000000) SysColor2RGB = GetSysColor(lColor)End Function
For 16-bit versions of VB, replace the GetSysColor declaration with this code:
Declare Function GetSysColor Lib "User" ( _ ByVal nIndex As Integer) As Long