How to retrieve windows colours?

BlitzPlus Forums/BlitzPlus Programming/How to retrieve windows colours?

Rottbott(Posted 2003) [#1]
Say I want to draw an image with a transparent background on to my window. I make a canvas, I then colour the canvas to the colour of the window, then draw my image (with a black background to make it transparent) onto the canvas.

However this won't work if the default windows colour scheme has been changed.

So I need either another way to do this, or a way to find out the default windows background colour.


JoshK(Posted 2003) [#2]
Use the windows API. It's like GetSysColor() or something like that.


EOF(Posted 2003) [#3]
; API - GetSysColor


; Userlibs
; ==================================
; .lib "user32.dll"
; GetSysColor%(index%):"GetSysColor"
; ==================================


Const COLOR_3DDKSHADOW=21
Const COLOR_3DFACE=15
Const COLOR_3DHIGHLIGHT=20
Const COLOR_3DHILIGHT=20
Const COLOR_3DLIGHT=22
Const COLOR_3DSHADOW=16
Const COLOR_ACTIVEBORDER=10
Const COLOR_ACTIVECAPTION=2
Const COLOR_ADD=712
Const COLOR_ADJ_MAX=100
Const COLOR_ADJ_MIN=-100
Const COLOR_APPWORKSPACE=12
Const COLOR_BACKGROUND=1
Const COLOR_BLUE=708
Const COLOR_BLUEACCEL=728
Const COLOR_BOX1=720
Const COLOR_BTNFACE=15
Const COLOR_BTNHIGHLIGHT=20
Const COLOR_BTNHILIGHT=20
Const COLOR_BTNSHADOW=16
Const COLOR_BTNTEXT=18
Const COLOR_CAPTIONTEXT=9
Const COLOR_CURRENT=709
Const COLOR_CUSTOM1=721
Const COLOR_DESKTOP=1
Const COLOR_ELEMENT=716
Const COLOR_GRADIENTACTIVECAPTION=27
Const COLOR_GRADIENTINACTIVECAPTION=28
Const COLOR_GRAYTEXT=17
Const COLOR_GREEN=707
Const COLOR_GREENACCEL=727
Const COLOR_HIGHLIGHT=13
Const COLOR_HIGHLIGHTTEXT=14
Const COLOR_HOTLIGHT=26
Const COLOR_HUE=703
Const COLOR_HUEACCEL=723
Const COLOR_HUESCROLL=700
Const COLOR_INACTIVEBORDER=11
Const COLOR_INACTIVECAPTION=3
Const COLOR_INACTIVECAPTIONTEXT=19
Const COLOR_INFOBK=24
Const COLOR_INFOTEXT=23
Const COLOR_LUM=705
Const COLOR_LUMACCEL=725
Const COLOR_LUMSCROLL=702
Const COLOR_MATCH_VERSION=$200
Const COLOR_MENU=4
Const COLOR_MENUTEXT=7
Const COLOR_MIX=719
Const COLOR_NO_TRANSPARENT=$FFFFFFFF
Const COLOR_PALETTE=718
Const COLOR_RAINBOW=710
Const COLOR_RED=706
Const COLOR_REDACCEL=726
Const COLOR_SAMPLES=717
Const COLOR_SAT=704
Const COLOR_SATACCEL=724
Const COLOR_SATSCROLL=701
Const COLOR_SAVE=711
Const COLOR_SCHEMES=715
Const COLOR_SCROLLBAR=0
Const COLOR_SOLID=713
Const COLOR_SOLID_LEFT=730
Const COLOR_SOLID_RIGHT=731
Const COLOR_TUNE=714
Const COLOR_WINDOW=5
Const COLOR_WINDOWFRAME=6
Const COLOR_WINDOWTEXT=8


; example

col=GetSysColor(COLOR_DESKTOP)
r=col And $ff
g=col Shr 8 And $ff
b=col Shr 16 And $ff

Notify "Desktop Color (RGB) = "+r+", "+g+", "+b

End



Rottbott(Posted 2003) [#4]
Thanks!