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

解決


もも  2005-05-16 07:41:25  No: 14806

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

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


kkk  2005-05-16 13:59:33  No: 14807

>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

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

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


もも  2005-05-17 03:16:51  No: 14809

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加