C++ でシステムカラーを取得するクラスってどっかに無いかなぁって思ってたんですが、見つかりませんでした。そこで C# 感覚で使えるように C# の SystemColors クラスを C++ へ移植しました。
対応表
C# のプロパティが C++ のどの値を参照しているかの対応表です。なんでこんなことになってるのかは分からないのですが、 C# も C++ も同じ色を別名で複数定義していますね。
C# | C++ | 内容 | HTML |
---|---|---|---|
ActiveBorder | COLOR_ACTIVEBORDER | アクティブなウィンドウの境界線の色であるカラー | #B4B4B4 (180,180,180) |
ActiveCaption | COLOR_ACTIVECAPTION CTLCOLOR_LISTBOX | アクティブなウィンドウのタイトル バーの背景の色を表すカラー | #99B4D1 (153,180,209) |
ActiveCaptionText | COLOR_CAPTIONTEXT | アクティブなウィンドウのタイトル バーのテキストの色であるカラー | #000000 (0,0,0) |
AppWorkspace | COLOR_APPWORKSPACE | アプリケーション ワークスペースの色であるカラー | #ABABAB (171,171,171) |
ButtonFace Control | COLOR_3DFACE COLOR_BTNFACE | 3D 要素の表面の色を表すカラー | #F0F0F0 (240,240,240) |
ButtonHighlight | COLOR_3DHILIGHT COLOR_3DHIGHLIGHT COLOR_BTNHILIGHT COLOR_BTNHIGHLIGHT | 3D 要素の影の色を表すカラー | #FFFFFF (0,0,0) |
ButtonShadow ControlDark | COLOR_3DSHADOW COLOR_BTNSHADOW | 3D 要素の暗い影の色を表すカラー | #A0A0A0 (160,160,160) |
ControlLightLight | COLOR_3DHILIGHT COLOR_3DHIGHLIGHT COLOR_BTNHILIGHT COLOR_BTNHIGHLIGHT | 3D 要素の影の色を表すカラー | #FFFFFF (0,0,0) |
ControlDarkDark | COLOR_3DDKSHADOW | 3D 要素の明るい色を表すカラー | #696969 (105,105,105) |
ControlLight | COLOR_3DLIGHT | 3D 要素の強調表示カラーを表すカラー | #FFFFFF (255,255,255) |
ControlText | COLOR_BTNTEXT | 3D 要素のテキストの色を表すカラー | #000000 (0,0,0) |
Desktop | COLOR_BACKGROUND COLOR_DESKTOP CTLCOLOR_EDIT | デスクトップの色であるカラー | #000000 (0,0,0) |
GradientActiveCaption | COLOR_GRADIENTACTIVECAPTION | アクティブなウィンドウのタイトル バーに適用される色のグラデーションにおいて最も明るい色を表すカラー | #B9D1EA (185,209,234) |
GradientInactiveCaption | COLOR_GRADIENTINACTIVECAPTION | アクティブでないウィンドウのタイトル バーに適用される色のグラデーションにおいて最も明るい色を表すカラー | #D7E4F2 (215,228,242) |
GrayText | COLOR_GRAYTEXT | 淡色表示になっているテキストの色を表すカラー | #6D6D6D (109,109,109) |
Highlight | COLOR_HIGHLIGHT | 選択した項目の背景の色を表すカラー | #0078D7 (8,120,215) |
HighlightText | COLOR_HIGHLIGHTTEXT | 選択した項目のテキストの色であるカラー | #FFFFFF (255,255,255) |
HotTrack | COLOR_HOTLIGHT | ホット トラッキング項目の指定に使用する色を表すカラー | #0066CC (0,102,204) |
InactiveBorder | COLOR_INACTIVEBORDER | 非アクティブなウィンドウの境界線の色であるカラー | #F4F7FC (244,247,252) |
InactiveCaption | COLOR_INACTIVECAPTION CTLCOLOR_BTN | アクティブでないウィンドウのタイトル バーの背景の色を表すカラー | #D7E4F2 (215,228,242) |
InactiveCaptionText | COLOR_INACTIVECAPTIONTEXT | アクティブでないウィンドウのタイトル バーのテキストの色を表すカラー | #000000 (0,0,0) |
Info | COLOR_INFOBK | ToolTip の背景の色を表すカラー | #FFFFE1 (255,255,225) |
InfoText | COLOR_INFOTEXT | ToolTip のテキストの色を表すカラー | #000000 (0,0,0) |
Menu | COLOR_MENU CTLCOLOR_DLG | メニューの背景色であるカラー | #F0F0F0 (240,240,240) |
MenuBar | COLOR_MENUBAR | メニュー バーの背景の色を表すカラー | #F0F0F0 (240,240,240 |
MenuHighlight | COLOR_MENUHILIGHT | メニューをフラット メニューとして表示するときにメニュー項目の強調表示に使用される色を表すカラー | #0078D7 (0,120,215) |
MenuText | COLOR_MENUTEXT CTLCOLOR_MAX | メニューのテキストの色であるカラー | #000000 (0,0,0) |
ScrollBar | COLOR_SCROLLBAR CTLCOLOR_MSGBOX | スクロール バーの背景の色を表すカラー | #C8C8C8 (200,200,200) |
Window | COLOR_WINDOW CTLCOLOR_SCROLLBAR | ウィンドウのクライアント領域の背景の色を表すカラー | #FFFFFF (255,255,255) |
WindowFrame | COLOR_WINDOWFRAME CTLCOLOR_STATIC | ウィンドウ フレームの色を示すカラー | #646464 (100,100,100) |
WindowText | COLOR_WINDOWTEXT | ウィンドウのクライアント領域のテキスト色であるカラー | #000000 (0,0,0) |
ソースコード
C++ でも C# の SystemColors クラスのプロパティ名と同じ名前でシステムカラーが取得できます。
#pragma once
class OTZSystemColors {
public:
/// <summary>
/// アクティブなウィンドウの境界線の色であるカラー
/// </summary>
/// <returns></returns>
static inline DWORD ActiveBorder() { return ::GetSysColor(COLOR_ACTIVEBORDER); }
/// <summary>
/// アクティブなウィンドウのタイトル バーの背景の色を表すカラー
/// </summary>
/// <returns></returns>
static inline DWORD ActiveCaption() { return ::GetSysColor(COLOR_ACTIVECAPTION); }
/// <summary>
/// アクティブなウィンドウのタイトル バーのテキストの色であるカラー
/// </summary>
/// <returns></returns>
static inline DWORD ActiveCaptionText() { return ::GetSysColor(COLOR_CAPTIONTEXT); }
/// <summary>
/// アプリケーション ワークスペースの色であるカラー
/// </summary>
/// <returns></returns>
static inline DWORD AppWorkspace() { return ::GetSysColor(COLOR_APPWORKSPACE); }
/// <summary>
/// 3D 要素の表面の色を表すカラー
/// </summary>
/// <returns></returns>
static inline DWORD ButtonFace() { return ::GetSysColor(COLOR_BTNFACE); }
/// <summary>
/// 3D 要素の影の色を表すカラー
/// </summary>
/// <returns></returns>
static inline DWORD ButtonHighlight() { return ::GetSysColor(COLOR_BTNHILIGHT); }
/// <summary>
/// 3D 要素の暗い影の色を表すカラー
/// </summary>
/// <returns></returns>
static inline DWORD ButtonShadow() { return ::GetSysColor(COLOR_BTNSHADOW); }
/// <summary>
/// 3D 要素の表面の色を表すカラー
/// </summary>
/// <returns></returns>
static inline DWORD Control() { return ::GetSysColor(COLOR_BTNFACE); }
/// <summary>
/// 3D 要素の暗い影の色を表すカラー
/// </summary>
/// <returns></returns>
static inline DWORD ControlDark() { return ::GetSysColor(COLOR_BTNSHADOW); }
/// <summary>
/// 3D 要素の明るい色を表すカラー
/// </summary>
/// <returns></returns>
static inline DWORD ControlDarkDark() { return ::GetSysColor(COLOR_3DDKSHADOW); }
/// <summary>
/// 3D 要素の強調表示カラーを表すカラー
/// </summary>
/// <returns></returns>
static inline DWORD ControlLight() { return ::GetSysColor(COLOR_3DLIGHT); }
/// <summary>
/// 3D 要素の影の色を表すカラー
/// </summary>
/// <returns></returns>
static inline DWORD ControlLightLight() { return ::GetSysColor(COLOR_BTNHILIGHT); }
/// <summary>
/// 3D 要素のテキストの色を表すカラー
/// </summary>
/// <returns></returns>
static inline DWORD ControlText() { return ::GetSysColor(COLOR_BTNTEXT); }
/// <summary>
/// デスクトップの色であるカラー
/// </summary>
/// <returns></returns>
static inline DWORD Desktop() { return ::GetSysColor(COLOR_DESKTOP); }
/// <summary>
/// アクティブなウィンドウのタイトル バーに適用される色のグラデーションにおいて最も明るい色を表すカラー
/// </summary>
/// <returns></returns>
static inline DWORD GradientActiveCaption() { return ::GetSysColor(COLOR_GRADIENTACTIVECAPTION); }
/// <summary>
/// アクティブでないウィンドウのタイトル バーに適用される色のグラデーションにおいて最も明るい色を表すカラー
/// </summary>
/// <returns></returns>
static inline DWORD GradientInactiveCaption() { return ::GetSysColor(COLOR_GRADIENTINACTIVECAPTION); }
/// <summary>
/// 淡色表示になっているテキストの色を表すカラー
/// </summary>
/// <returns></returns>
static inline DWORD GrayText() { return ::GetSysColor(COLOR_GRAYTEXT); }
/// <summary>
/// 選択した項目の背景の色を表すカラー
/// </summary>
/// <returns></returns>
static inline DWORD Highlight() { return ::GetSysColor(COLOR_HIGHLIGHT); }
/// <summary>
/// 選択した項目のテキストの色であるカラー
/// </summary>
/// <returns></returns>
static inline DWORD HighlightText() { return ::GetSysColor(COLOR_HIGHLIGHTTEXT); }
/// <summary>
/// ホット トラッキング項目の指定に使用する色を表すカラー
/// </summary>
/// <returns></returns>
static inline DWORD HotTrack() { return ::GetSysColor(COLOR_HOTLIGHT); }
/// <summary>
/// 非アクティブなウィンドウの境界線の色であるカラー
/// </summary>
/// <returns></returns>
static inline DWORD InactiveBorder() { return ::GetSysColor(COLOR_INACTIVEBORDER); }
/// <summary>
/// アクティブでないウィンドウのタイトル バーの背景の色を表すカラー
/// </summary>
/// <returns></returns>
static inline DWORD InactiveCaption() { return ::GetSysColor(COLOR_INACTIVECAPTION); }
/// <summary>
/// アクティブでないウィンドウのタイトル バーのテキストの色を表すカラー
/// </summary>
/// <returns></returns>
static inline DWORD InactiveCaptionText() { return ::GetSysColor(COLOR_INACTIVECAPTIONTEXT); }
/// <summary>
/// ToolTip の背景の色を表すカラー
/// </summary>
/// <returns></returns>
static inline DWORD Info() { return ::GetSysColor(COLOR_INFOBK); }
/// <summary>
/// ToolTip のテキストの色を表すカラー
/// </summary>
/// <returns></returns>
static inline DWORD InfoText() { return ::GetSysColor(COLOR_INFOTEXT); }
/// <summary>
/// メニューの背景色であるカラー
/// </summary>
/// <returns></returns>
static inline DWORD Menu() { return ::GetSysColor(COLOR_MENU); }
/// <summary>
/// メニュー バーの背景の色を表すカラー
/// </summary>
/// <returns></returns>
static inline DWORD MenuBar() { return ::GetSysColor(COLOR_MENUBAR); }
/// <summary>
/// メニューをフラット メニューとして表示するときにメニュー項目の強調表示に使用される色を表すカラー
/// </summary>
/// <returns></returns>
static inline DWORD MenuHighlight() { return ::GetSysColor(COLOR_MENUHILIGHT); }
/// <summary>
/// メニューのテキストの色であるカラー
/// </summary>
/// <returns></returns>
static inline DWORD MenuText() { return ::GetSysColor(COLOR_MENUTEXT); }
/// <summary>
/// スクロール バーの背景の色を表すカラー
/// </summary>
/// <returns></returns>
static inline DWORD ScrollBar() { return ::GetSysColor(COLOR_SCROLLBAR); }
/// <summary>
/// ウィンドウのクライアント領域の背景の色を表すカラー
/// </summary>
/// <returns></returns>
static inline DWORD Window() { return ::GetSysColor(COLOR_WINDOW); }
/// <summary>
/// ウィンドウ フレームの色を示すカラー
/// </summary>
/// <returns></returns>
static inline DWORD WindowFrame() { return ::GetSysColor(COLOR_WINDOWFRAME); }
/// <summary>
/// ウィンドウのクライアント領域のテキスト色であるカラー
/// </summary>
/// <returns></returns>
static inline DWORD WindowText() { return ::GetSysColor(COLOR_WINDOWTEXT); }
};
コメント