グループ化したラジオボタンすべての背景色を変更するには?

解決


田中  2009-08-14 05:33:05  No: 70795

田中と申します。WinXP + VC++6.0(MFC)にてプログラムを行っています。

プロパティページに3つのラジオボタンを貼り付けてグループ化しています。
これらのラジオボタンにDDXでコントロールメンバ変数(m_rbButton1)を設
定、ただしグループ化しているのでグループの先頭のみしかIDが表示されな
いため、先頭だけに設定。
その変数を使い以下の手順にて背景色を変更しようとしましたが、グループ
の先頭のラジオボタンだけしか変更されません。

これに関しては探し方が悪いためかMSDN中で記事を見つけることが出来ず、
背景色の変更に関するサイトは多数あったのですが、この点に関して記述さ
れたものを見つけることが出来ませんでした。

グループ化した複数のラジオボタンのすべての背景色を変更する方法につい
てアドバイスいただければ幸いです。よろしくお願いいたします。

//グローバル化したCBrushのオブジェクト(oBrush)を作成。
//当該プロパティページにOnCtlColorハンドラを追加。
//OnInitDialogハンドラ内で、次のようにソリッドブラシを作成。
  oBrush.CreateSolidBrush(RGB(0, 0, 105));

OnCtlColorハンドラ内に以下のコードを記述しています。

    if(nCtlColor == CTLCOLOR_STATIC)
    {
        if(*pWnd == m_rbButton1)
        {
            hbr = oBrush;
            pDC->SetBkColor(RGB(0, 0, 105));
        }
    }


田中  2009-08-15 22:16:56  No: 70796

質問者の田中です。
ふと思いつき、各ラジオボタンに手動でCButtonクラスのオブジェクトを割り
付けることによって解決できました。

例:
//CButtonクラスのグローバルポインタオブジェクトを宣言し
    CButton* oRB;

//OnInitDialogハンドラ内でオブジェクトにコントロールを割り付け
    oRB = (CButton*)GetDialogItem(ID_RB);  //ID_RBはラジオボタンのID

//OnCtlColorハンドラ内に以下のコードを記述
    if (nCtlColor == CTLCOLOR_STATIC)
    {
  if (*pWnd == *oRB)
         {
            hbr = oBrush;
            pDC->SetBkColor(RGB(0, 0, 102));
         }
    }
  

お騒がせいたしました。


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

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






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