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 |