[抓狂中!!!]高分悬赏单选按钮的诡异问题!!!!!
请按以下步骤建立一个测试工程,有不出错的,把你的工程整个发给我,如果确实没有问题的,我单独给分!
好了,闲话少说,现在开始:
1、用VC6建立一个基于对话框的MFC程序。
2、在对话框上放三个Radio Button,不用改它们的ID,用默认的就成,记得把第一个Radio Button的Group属性勾上。
3、用类向导添加一个int型的成员变量m_nSel,用来接收这组Radio的选择结果。
3、响应每个单选按钮的BN_CLICKED消息。
4、在每个消息响应函数中写入以下代码:
//-----------------------
UpdateData();
CString s;
s.Format("你选中了第 %d 项!",m_nSel);
MessageBox(s);
return;//如果在这里就返回,则一切正常。
//如果继续执行下去,下一次UpdateData()就得不到正确结果!!
CRect rt;
GetDlgItem(IDC_RADIO1)->GetWindowRect(&rt);
ScreenToClient(&rt);
int h=rt.Height();//每一个Radio的高度
switch(m_nSel)
{
case 0:
GetDlgItem(IDC_RADIO2)->SetWindowPos(0,rt.left,rt.bottom+5+15,0,0,SWP_NOSIZE);
GetDlgItem(IDC_RADIO3)->SetWindowPos(0,rt.left,rt.bottom+5+h+15,0,0,SWP_NOSIZE);
break;
case 1:
rt.top=rt.bottom;
rt.bottom=rt.top+h;
GetDlgItem(IDC_RADIO2)->SetWindowPos(0,rt.left,rt.bottom,0,0,SWP_NOSIZE);
GetDlgItem(IDC_RADIO3)->SetWindowPos(0,rt.left,rt.bottom+5+20+15,0,0,SWP_NOSIZE);
break;
case 2:
rt.top=rt.bottom;
rt.bottom=rt.top+h;
GetDlgItem(IDC_RADIO2)->SetWindowPos(0,rt.left,rt.bottom,0,0,SWP_NOSIZE);
rt.top=rt.bottom;
rt.bottom=rt.top+h;
GetDlgItem(IDC_RADIO3)->SetWindowPos(0,rt.left,rt.bottom,0,0,SWP_NOSIZE);
break;
}
//这些代码的目的是:点击不同的选项,要显示不同的控件出来,但是需要移动一下这些单选按钮的位置以显示别的东西。结果代码写好了,就出来这么个诡异的问题!见下述。
//----------------------
现在可以编译运行了。
但此时问题也就出现了!!!
用鼠标点选某个选项,无论是第几个,第一次点击所弹出的消息框中的结果总是正确的。
在此之后的点击,全部无法得到正确的值!
请各位大人指正或给个说法,在下谢谢,先!!!
(继续抓ing~~~~)