〜 グラフィック 〜
配置オブジェクトやウィンドウ枠等の色を取得 (要USER32.DLL)

HSP3以降ではsyscolor命令でウィンドウ背景色や枠の色等のシステムカラーを取得できますが、
HSP2以前では標準命令にシステムカラーを取得する命令が用意されていないために
「チェックボックスの背景色がウィンドウ色と揃えられずに目立ってしまう」問題が起こっていました。
そのため、システムカラーを取得できるプラグイン命令も多数されましたが、
システムカラーを取得するためだけに取得できるDLLをわざわざ使うのはバカらしいし、
HSP2.6からWindowsの備える機能をHSPの標準命令で呼び出せるようになりましたので、
HSP3に追加されたsyscolor命令の元になっているAPI関数GetSysColorを呼び出してみましょう。

使い方や取得できる色はsyscolor命令と全く同じですので、HSP3以降で使用するメリットはありません。
当Tipsはsyscolor命令が標準命令に用意されてないHSP2用とします。
尚、OSでサポートしていない色を使おうとした場合は真黒となります。
0x0000COLOR_SCROLLBARスクロールバーの軸
0x0001COLOR_BACKGROUND
COLOR_DESKTOP
デスクトップ
0x0002COLOR_ACTIVECAPTIONアクティブウィンドウのタイトルバー(グラデーション左端)
0x0003COLOR_INACTIVECAPTION非アクティブウィンドウのタイトルバーテキスト(グラデーション左端)
0x0004COLOR_MENUメニューの背景
0x0005COLOR_WINDOWウィンドウの背景
0x0006COLOR_WINDOWFRAMEウィンドウの枠
0x0007COLOR_MENUTEXTメニュー内のテキスト
0x0008COLOR_WINDOWTEXTウィンドウ内のテキスト
0x0009COLOR_CAPTIONTEXTアクティブウィンドウのタイトルバーテキスト
0x000ACOLOR_ACTIVEBORDERアクティブウィンドウの境界
0x000BCOLOR_INACTIVEBORDER非アクティブウィンドウの境界
0x000CCOLOR_APPWORKSPACEMDIアプリケーションの背景
0x000DCOLOR_HIGHLIGHTコントロール内における選択された項目
0x000ECOLOR_HIGHLIGHTTEXTコントロール内における選択された項目のテキスト
0x000FCOLOR_3DFACE
COLOR_BTNFACE
3Dオブジェクトの表面
0x0010COLOR_3DSHADOW
COLOR_BTNSHADOW
3Dオブジェクトの背景(光源の反対方向の縁)
0x0011COLOR_GRAYTEXT無効状態のテキスト
0x0012COLOR_BTNTEXTプッシュボタンのテキスト
0x0013COLOR_INACTIVECAPTIONTEXT非アクティブウィンドウのタイトルバーテキスト
0x0014COLOR_3DHIGHLIGHT
COLOR_3DHILIGHT
COLOR_BTNHIGHLIGHT
COLOR_BTNHILIGHT
3Dオブジェクトのハイライト背景(光源方向の縁)
0x0015COLOR_3DDKSHADOW3Dオブジェクトの暗い影
0x0016COLOR_3DLIGHT3Dオブジェクトの明るい背景(光源方向の縁)
0x0017COLOR_INFOTEXTツールチップテキスト
0x0018COLOR_INFOBKツールチップ背景
0x0019---ButtonAlternateFace
0x001ACOLOR_HOTLIGHTホットトラックアイテム(Windows98/2000〜)
0x001BCOLOR_GRADIENTACTIVECAPTIONアクティブウィンドウのタイトルバー(グラデーション右端)(Windows98/2000〜)
0x001CCOLOR_GRADIENTINACTIVECAPTION非アクティブウィンドウのタイトルバーテキスト(グラデーション右端)(Windows98/2000〜)
0x001DCOLOR_MENUHILIGHTフラットメニューアイテムのハイライト(WindowsXP〜)
0x001ECOLOR_MENUBARフラットメニューバーのハイライト(WindowsXP〜)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
	ll_libload user, "user32.dll"
	ll_getproc GetSysColor, "GetSysColor", user

#module
#deffunc syscolor int
	mref index, 0
	ll_callfunc index, 1, GetSysColor@
	ll_ret c
	color c & 0xFF, c >> 8 & 0xFF, c >> 16 & 0xFF
	return
#global

	objsize 200, 25
	syscolor 15 // オブジェクトの表面色
	boxf
	pos 10, 10 : chkbox "溶け込みます", chk
	stop