Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: Visual Basic
Expertise: Intermediate
Oct 16, 1998



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Use VB System Color Constants in API Calls

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-bit
Option Explicit
Declare Function GetSysColor Lib "User32" ( _
	ByVal nIndex As Long) As Long
Public 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
Steve Cisco
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date