MFCにおけるRadio Buttonの使い方

2944 ワード

まずダイアログボックスにradio buttonを2つ追加し,それぞれRadio 1とRadio 2である.
質問1:ラジオ1またはラジオ2をデフォルトで選択するにはどうすればいいですか?どのようにしてどれが選ばれたか知っていますか?肝心なのは、「デフォルト」はOnInitDialog()にすればいいことです.3つの方法を選択できます.1つ目は、
((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(TRUE);// 
((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(FALSE);// 
((CButton *)GetDlgItem(IDC_RADIO1))->GetCheck();// 1 ,0 

2つ目はcongtrol型変数(サブクラス化)を関連付けてctrl+W(classwizardを開く)をよくして、Member Variablesを点けて、あれ?どうしてIDCがないの?RADIO 1というID?グループがなかったのか.radio buttonは通常グループで使用されるので、グループの中で反発します.キャンセルして、ダイアログボックスのリソースパネルに戻り、属性を右クリックしてGroupを選択すると、Radio 1とRadio 2がグループになります(どのように彼らがグループであることを知っていますか?後述).このとき、Radio 1にcongtrol型変数m_を追加することができるctrlRadio 1です.m_ctrlRadio1.SetCheck(TRUE); GetCheck()を使用してステータスを取得することもできます.3つ目:int型変数を関連付ける(同じようにグループ化する必要がある)m_nRadio 1ダイアログボックスのコンストラクション関数を開くと、m_nRadio1 = -1;m_nRadio 1別代入-1はどちらも選ばれていないことを示す.-1を0に変更すると、Radio 1のデフォルトが選択されていることがわかります.このように、m_nRadio 1の値が1で2番目に選ばれました(ここでも同じ問題がありますが、どれが1番目ですか?どれが2番目ですか?)取得状態は簡単であり、UpdateData(TRUE)後にm_を判断するnRadio 1の値でいいです.
 
質問2:マルチグループの使用方法複数のグループと1つのグループが同じように使用され、どちらがどのグループなのかを明らかにすればよい.ダイアログボックスにRadio 3とRadio 4を追加します.簡単です.まずこれらのRadio Buttonの順番を並べて、彼らのTAB ORDERを並べます.ダイアログボックスのリソースパネルでCtrl+Dをクリックし、自分の理想の順序でマウスでクリックすればいいです.Radio 1、Radio 2、Radio 3、Radio 4はそれぞれ1、2、3、4であると仮定してもよい.Radio 1とRadio 3の両方がGroup属性を選択すると、1、2は1組、3、4は別のグループになります.グループ化の原則はGroup属性を選択したものから、次のGroup属性を選択するまで始まります.Ctrl+Dを使って、Radio 1、Radio 2、Radio 3、Radio 4をそれぞれ1、3、2、4にしてもいいです.では、Radio 1とRadio 3は1組です.m_nRadio 1=1であり、このときRadio 2ではなくRadio 3が選ばれる.グループを分けたら別々に使いましょう.
うん、マウスクリックイベントを追加するかもしれません.とても簡単です.
一、ラジオボタンをグループ化する:各グループの最初のラジオボタン設定属性:Group,Tabstop,Auto;残りのボタンはプロパティTabstop,Autoを設定します.例えば、Radio 1、Radio 2、Radio 3は一組、Radio 4、Radio 5は一組
設定Radio 1属性:Group,Tabstop,Auto設定Radio 2属性:Tabstop,Auto設定Radio 3属性:Tabstop,Auto
設定Radio 4属性:Group,Tabstop,Auto設定Radio 5属性:Tabstop,Auto
二、ClassWizardでラジオコントロールに変数を定義し、各グループに1つしか定義できない.例:m_Radio1、m_Radio4.
三、ClassWizardで各ラジオボタンのクリックメッセージ関数を生成し、内容を加える:
 
void CWEditView::OnRadio1() 
{
    m_Radio1 = 0;    // 
}

void CWEditView::OnRadio2() 
{
    m_Radio1 = 1;    // 
}

void CWEditView::OnRadio3() 
{
    m_Radio1 = 2;    // 
}

void CWEditView::OnRadio4() 
{
    m_Radio4 = 0;    // 
}

void CWEditView::OnRadio5() 
{
    m_Radio4 = 1;    // 
}

 
 
四、デフォルトボタンの設定:コントロール変数を定義する時、ClassWizardは構造関数の中で変数の初期値を-1に設定し、それを他の値に変更すればよい.次のようになります.
//{{AFX_DATA_INIT(CUnitBlockTypeFlankPublicAdd)
m_Radio1 = 0;    // 
m_Radio4 = 0;    // 
//}}AFX_DATA_INIT

 
 
原文住所:http://blog.csdn.net/abcjennifer/article/details/7476045