MFC单选框是不是必须用一个按钮实现相应选择
我定义了三个单选按钮和一个静态文本框,第一个单选按钮和文本框是组的属性选中,在IDC_REDIO1定义了一个变量m_jinzhi。我能不能之间在选中单选按钮的同时就完成相...
我定义了三个单选按钮和一个静态文本框,第一个单选按钮和文本框是组的属性选中,在IDC_REDIO1定义了一个变量m_jinzhi。我能不能之间在选中单选按钮的同时就完成相应的功能。
补充,我的三个按钮分别实现的是将数字转换成十进制、八进制、十六进制。
现在,我可以通过再添加一个按钮完成相应选中的功能,能不能不通过按钮呢?
void CMyDlg::OnChoose() 这是给IDC_REDIO设置的BN_CLICK
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);//获取m_profession
if(m_profession==-1)
{
MessageBox("必须选择一个!","警告",MB_ICONWARNING);
}
else
{
CString str;
GetDlgItem(IDC_RADIO1+m_profession)->GetWindowText(str);
GetDlgItem(IDC_SHOW)->SetWindowText(str);
}
}
以上的程序无错,但是,运行时会卡住,不停地显示MessageBox 展开
补充,我的三个按钮分别实现的是将数字转换成十进制、八进制、十六进制。
现在,我可以通过再添加一个按钮完成相应选中的功能,能不能不通过按钮呢?
void CMyDlg::OnChoose() 这是给IDC_REDIO设置的BN_CLICK
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);//获取m_profession
if(m_profession==-1)
{
MessageBox("必须选择一个!","警告",MB_ICONWARNING);
}
else
{
CString str;
GetDlgItem(IDC_RADIO1+m_profession)->GetWindowText(str);
GetDlgItem(IDC_SHOW)->SetWindowText(str);
}
}
以上的程序无错,但是,运行时会卡住,不停地显示MessageBox 展开
1个回答
展开全部
要想实现上述功能,只需要为每个单选按钮控件分别编程
单选初始选中第一个单选按钮问题,需要将程序前面预说明中m_jinzhi = -1;改成m_jinzhi = 0;
第一次运行程序时,单选按钮虽选中,但ID为IDC_SHOW的控件中仍没有需要的内容,这时解决办法是在OnInitDialog()函数中添加一行
OnRadio1() ;
即可
void CAsdfgDlg::OnRadio1()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CString str;
GetDlgItem(IDC_RADIO1)->GetWindowText(str);
GetDlgItem(IDC_SHOW)->SetWindowText(str);
}
void CAsdfgDlg::OnRadio2()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CString str;
GetDlgItem(IDC_RADIO2)->GetWindowText(str);
GetDlgItem(IDC_SHOW)->SetWindowText(str);
}
void CAsdfgDlg::OnRadio3()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CString str;
GetDlgItem(IDC_RADIO3)->GetWindowText(str);
GetDlgItem(IDC_SHOW)->SetWindowText(str);
}
若满意请及时采纳,谢谢
单选初始选中第一个单选按钮问题,需要将程序前面预说明中m_jinzhi = -1;改成m_jinzhi = 0;
第一次运行程序时,单选按钮虽选中,但ID为IDC_SHOW的控件中仍没有需要的内容,这时解决办法是在OnInitDialog()函数中添加一行
OnRadio1() ;
即可
void CAsdfgDlg::OnRadio1()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CString str;
GetDlgItem(IDC_RADIO1)->GetWindowText(str);
GetDlgItem(IDC_SHOW)->SetWindowText(str);
}
void CAsdfgDlg::OnRadio2()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CString str;
GetDlgItem(IDC_RADIO2)->GetWindowText(str);
GetDlgItem(IDC_SHOW)->SetWindowText(str);
}
void CAsdfgDlg::OnRadio3()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CString str;
GetDlgItem(IDC_RADIO3)->GetWindowText(str);
GetDlgItem(IDC_SHOW)->SetWindowText(str);
}
若满意请及时采纳,谢谢
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询