システムカラーについて教えてください

解決


もも  2005-05-16 07:41:25  No: 14806  IP: [192.*.*.*]

こんにちは。
Win98ではレジストリの HKEY_CURRENT_USER\Control Panel\Colors には
HotTrackingColorは見当たらないのですが、clHotLightというのは
どこで取得しているのでしょうか?
あと、
ButtonAlternateFace
MenuHilight
MenuBar
はWinXPから追加された値ですか?
教えてください。

どうぞよろしくお願いします。

編集    削除
kkk  2005-05-16 13:59:33  No: 14807  IP: [192.*.*.*]

>Win98ではレジストリの HKEY_CURRENT_USER\Control Panel\Colors には
>HotTrackingColorは見当たらないのですが、clHotLightというのは
>どこで取得しているのでしょうか?
Win98がないのでWin98のことはわかりませんがWinXPにはありました。

ButtonAlternateFace/MenuHilight/MenuBar はWinXPのテーマ関連で追加になったものだと思われます。
WinXPのテーマ機能サポートによりレジストリが追加されているため
システムカラーの取得はレジストリから取得するより GetSysColor(USER32.DLL)を使用したほうが良いと思われます。
レジストリは[HKEY_CURRENT_USER\Control Panel\Appearance]あたり・・・
また、MS以外のテーマ化ソフトが存在していますがそれらは上記のレジストリとは別の領域に管理情報を持っているようです。
---
参考)
GetSysColor(25); // ButtonAlternateFace
GetSysColor(26); // HotTrackingColor(COLOR_HOTLIGHT)
GetSysColor(29); // MenuHilight (COLOR_MENUHILIGHT)
GetSysColor(30); // MenuBar (COLOR_MENUBAR)

指定された値がそのプラットホームでサポートされていない場合
GetSysColor は0を返しますので有効か無効か不明です。
GetSysColorBrush が 0 を返せば無効なカラーインデックスです。

編集    削除
98えすいー  2005-05-16 18:54:28  No: 14808  IP: [192.*.*.*]

Win98SEの場合、レジストリの HKEY_CURRENT_USER\Control Panel\Colors には


有り HotTrackingColor
有り ButtonAlternateFace
無し MenuHilight
無し MenuBar

編集    削除
もも  2005-05-17 03:16:51  No: 14809  IP: [192.*.*.*]

ありがとうございます。
GetSysColorで取得しているんですね。
レジストリから取得しようと思っていたんですが、
GetSysColorBrushを使えばプラットフォームが違っても
取得できるかがわかるので便利ですね。

すごく参考になりました。
kkkさん、98えすいーさん、本当にありがとうございました。

編集    削除