MaxSysColors




Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long, _
ByVal hDC As Long) As Long
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hDC As Long, _
ByVal nIndex As Long) As Long
Private Const BITSPIXEL = 12
Private Const PLANES = 14

' returns the max number of colors supported by the video card


Function MaxSystemColors() As Long
Dim hWnd As Long
Dim hDC As Long
Dim bitsPerPixel As Long
Dim colorPlanes As Long
Dim bits As Integer

' get the device context of the desktop window

hWnd = GetDesktopWindow()
hDC = GetDC(hWnd)
' the number of bits per pixels

bitsPerPixel = GetDeviceCaps(hDC, BITSPIXEL)
' the number of color planes

colorPlanes = GetDeviceCaps(hDC, PLANES)
' number of bits for each pixel

bits = bitsPerPixel * colorPlanes
' no video card has more than 1.6 million colors

If bits > 24 Then bits = 24
' evaluate the result

MaxSystemColors = 2 ^ bits
' release the device context

ReleaseDC hWnd, hDC
End Function












( maxsyscolors.html )- by Paolo Puglisi - Modifica del 17/12/2023