MFC单选按钮动态更改按钮名称

时间:2013-01-11 04:55:39

标签: forms mfc radio-button

我创建了一个带有4个单选按钮的MFC表单,表单上有名称A,B,X,Y,

现在我希望表单在我选择按钮A时显示名称X,Y

当我选择按钮B时,我希望X,Y的名称变为M,N

怎么做?

1 个答案:

答案 0 :(得分:3)

您可以使用SetWindowText()更改任何其他控件的方式更改radiobutton上的文本;

为了处理“选择”无线电按钮的事件,请为BN_CLICKED通知消息添加处理程序。我建议你为所有四个radiobuttons使用相同的处理程序。然后,在函数内部写下这个小代码:

// assumptions:
// there are four radiobuttons: IDC_RADIOA, IDC_RADIOB, IDC_RADIOX, IDC_RADIOY
// The message map
BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
    ON_BN_CLICKED(IDC_RADIOA, OnRadio)
    ON_BN_CLICKED(IDC_RADIOB, OnRadio)
    ON_BN_CLICKED(IDC_RADIOX, OnRadio)
    ON_BN_CLICKED(IDC_RADIOY, OnRadio)
END_MESSAGE_MAP()

// a common handler for all four radiobuttons
void CMyDlg::OnRadio()
{
  switch(GetCheckedRadioButton(IDC_RADIOA, IDC_RADIOY))
  {
  case IDC_RADIOA:
     SetDlgItemText(IDC_RADIOX, _T("X"));
     SetDlgItemText(IDC_RADIOY, _T("Y"));
     break;
  case IDC_RADIOB:
     SetDlgItemText(IDC_RADIOX, _T("M"));
     SetDlgItemText(IDC_RADIOY, _T("N"));
     break;
  default:
     // you have not specified what to do when you select radio X and Y, so specify it here
     break;
  }
}