Windows10でCMFCButtonの背景色が制御できない場合の対処法

MFC

Twitch配信者向けのアプリケーションを作成していまして、デザインを弄っている時に、少しハマったので備忘録として。

CMFCButton Class
Learn more about: CMFCButton Class

CMFCButtonは、Visual Studio2008SP1以降に導入されたCButtonの派生クラスです。オーナードローせずにボタン色の変更が可能であったりと少し、便利に使えるクラス群になっています。

基本的には、MFCのリソースエディタでCButton変数を付与したボタンコントロールを作成し、.cpp/.hファイルの”CButton”を”CMFCButton”にすることで使うことができます。

背景色変更ができない

CMFCButtonクラスには、背景色が変更可能なSetFaceColorが用意されています。

CMFCButton Class
Learn more about: CMFCButton Class

しかし、Visual Studio2015とWindows10の環境下では、これが動作しない問題が発生しました。Visual Managerの問題?等々、いろいろ調べてみたのですが、まったく制御できませんでした。

ボタン境界線のみの専用設定があった

CMFCButtonには専用設定が用意されていて、ボタンの描画をWindowsの設定に従うか、自身で設定するかを指定する関数がありました。

CMFCButton Class
Learn more about: CMFCButton Class

これがデフォルトでTRUEになっているため、Windows10のボタンスタイル設定を参照しており、SetFaceColorの設定が無視されていました。

設定をFALSEに変更することで、ボタン色の変更が可能になります。

終わりに

今までもCMFCButtonは使ったことあったはずなんだけどなー。Windows10と8.1で挙動違うのかな。。。暇があったら調べてみます。

コメント

タイトルとURLをコピーしました