システムカラーでの塗りつぶしを行いたい時、以下のように書いている場合があると思います。
HBRUSH hBrush = CreateSolidBrush(GetSysColor(COLOR_WINDOW));
FillRect(hdc, &Rect, hBrush);
DeleteObject(hBrush);
もちろんこれでも機能はしますが、よりシンプルにすることができます。
GetSysColorBrush という、
システムカラーのブラシを取得できる関数がありますので、この関数で取得したブラシを使用してみます。
FillRect(hdc, &Rect, GetSysColorBrush(COLOR_WINDOW));
GetSysColorBrush で取得したブラシは解放の必要がありませんので、シンプルに書けました。
しかし、このコードはさらに簡潔にできます。
FillRect の最後の引数には、ブラシハンドルの替わりにシステムカラーを直接指定することができるからです。
FillRect(hdc, &Rect, (HBRUSH)(COLOR_WINDOW + 1));
システムカラーの値に +1 をするのを忘れないようにしましょう。
これは、COLOR_SCROLLBAR が 0 であるため、そのままでは NULL と区別が付かなくなってしまうからです。
(最初から、0 は使わないように設計されていれば良かったのでしょうが…)