質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MFC

MFC (Microsoft Fouondation Class)とは、MicrosoftがVC++用に開発したWindows用アプリケーションのフレームワークです。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

2回答

4898閲覧

Visual Stduio 2017 MFC にて、チェックボックスの背景色の変更について

BluePi85

総合スコア22

MFC

MFC (Microsoft Fouondation Class)とは、MicrosoftがVC++用に開発したWindows用アプリケーションのフレームワークです。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2018/05/21 06:37

Visual Stduio 2017 MFCにて、
チェックボックスを複数設置し、
for文にて、チェックが入っているチェックボックスの背景色を任意時間、変更したいです。

イメージ
CheckBox_1 ・・・ チェックあり
CheckBox_2 ・・・ チェックなし
CheckBox_3 ・・・ チェックあり

 for文にて、以下の処理を繰り返す

 背景色

  CheckBox_1 青(3秒間待機)→ デフォルト → 青(3秒間待機)→ デフォルト → ・・・
CheckBox_2 デフォルト → デフォルト → デフォルト → デフォルト → ・・・
CheckBox_3 デフォルト → 緑(3秒間待機) → デフォルト → 緑(3秒間待機)→ ・・・

OnCtlColor を用いて試みましたが、
行いたいような各チェックボックスの背景色を変更する事が出来ませんでした。

申し訳ありませんが、
アドバイスを頂けないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KoichiSugiyama

2018/05/21 08:49

どういうコードでダメだったのか提示してもらった方がアドバイスが集まりやすいです。
guest

回答2

0

ベストアンサー

ざっくりとですが1秒毎にチカチカするチェックボックス例です。

  • タイマーでON/OFF状態値を更新しつつInvalidateで表示更新
  • OnCtrlColorで状態に応じ背景色(ブラシ)を切り替え

C++

1class CxxxDlg : public CDialog 2{ 3 CBrush m_brBk; // チェックボックスの強調時の背景色 4 int m_nBr; // ON/OFF状態値 5 UINT m_uTimer; // ON/OFFタイマー 6 7 CButton m_chk1;// DDXでチェックボックスに紐づけた変数

C++

1BOOL CxxxDlg::OnInitDialog() 2{ 3 m_nBr = 0; 4 m_brBk.CreateSolidBrush(RGB(255, 0, 0)); // 背景(赤) 5 m_uTimer = SetTimer( 123, 1000, NULL); // OnDestroyなりでKillTimerしてください。 6 7void CxxxDlg::OnTimer(UINT_PTR nIDEvent) 8{ 9 if( nIDEvent == 123){ 10 m_nBr++; 11 Invalidate(); 12 } 13 14HBRUSH CxxxDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 15{ 16 HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); 17 if(pWnd->GetSafeHwnd() == m_chk1.GetSafeHwnd()){ 18 if(m_nBr % 2){ 19 return (HBRUSH)m_brBk; 20 } 21 } 22 return hbr; 23}

投稿2018/05/21 13:20

can110

総合スコア38266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BluePi85

2018/05/23 04:26

ソースを添付して頂き、ありがとうございます。 行いたい事ができ、非常に助かりました。
guest

0

その3秒間待機のときにメッセージループは回してますか?
回してないと表示の更新されませんぜ

#って、CheckBoxの背景色変更ってできてるの?

投稿2018/05/21 12:49

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問