MFCにおけるRadio Buttonの使い方の詳細

3004 ワード

本論文では,2つの一般的な問題に対する解を通して,MFCにおけるRadio Buttonの使用法を詳細に述べた.MFCの動作メカニズムやRadio Buttonコントロールの使い方の理解を深めるのに役立ちます.
まずダイアログボックスに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