
if(IsDlgButtonChecked(IDC_RADIO2)) //用这个判断是否选中,IDC_RADIO2是你的radiobutton的ID
查询这东西只能慢慢来积累经验了
"CButton类和radiobutton类之间的关系是什么。radiobutton是属于CButton类的派生么?"
因为没radiobutton类,所以就没有这个问题
"((CButton )GetDlgItem(IDC_RADIO1))->GetCheck;
这个方法是强制吧radiobutton转化成了CButton类吧"
这种方式其实什么也没发生,并不会发生转换行为,只是程序运行时,翻译器用CButton类的大小和方法去读GetDlgItem(IDC_RADIO1))这个指针的地方,这个可能有点不好理解,给你打个比喻:有一张纸上面写满了字,这张纸就是你的radio对象那么现在你有两个有孔的纸,他们上面孔的位置不一样,那么你把这两纸放到对象上看到的东西就不一样,这就是"((CButton )GetDlgItem(IDC_RADIO1))->GetCheck;这种方式下发生的行为 ,内存内容并没有改变,只是用不同的方式读取罢了
void GetAllFiles(CStringArray &strResult) //获取指定文件夹下的文件列表
{
CFileFind ff; //文件查找对象
CString strPath="D:\\"; //搜索指定文件夹下的所有文件
strResultRemoveAll(); //文件列表清空
CString strFileName;
int nIsFind=ffFindFile(strPath); //执行文件搜索
while(nIsFind) //遍历所有文件
{
nIsFind=ffFindNextFile(); //查找下一个文件
if(ffIsDirectory()) //若为目录,结束本次循环
continue;
strFileName=ffGetFileName(); //获取文件名称,包括后缀
if(strFileName=="" || strFileName=="")
continue;
strResultAdd(strFileName); //加入到字符串数组中
}
ffClose(); //关闭文件查找对象
}
看你MFC还是NET
MFC的话,假设你有几个单选按钮,ID分别是Radio_1 Radio_2:
CButton theradio = (CButton) GetDlgItem(Radio_1);
bool checked 1 = theradio -> GetCheck();
theradio = (CButton) GetDlgItem(Radio_2);
bool checked 2 = theradio -> GetCheck();
这2个布尔值就表示Radio_1和Radio_2是否被选择
如果有大量单选按钮,不必一个一个检查,用下面这个static函数
int buffer;
CButton::CheckRadioButtons( radio_1, radio_10, buffer)
buffer就会获得这10个按钮中被选中的那个的ID
如果是NET编程的话,很简单
Radio_1-> Checked 这个布尔值直接表示是否被选
CheckDlgButton(IDC_CHECK1, BST_UNCHECKED); // 0 CheckDlgButton(IDC_CHECK2, BST_CHECKED); // 1
((CButton)GetDlgItem(IDC_RADIO_1))->SetCheck(1);
也可以利用class wizard 将变量绑定到控件上,设置初值,然后调用UpdateData(FALSE)
SetCheck()函数就是了,1表选中,0表未选中。
上面的各位都说得对,我要补充的就是 如果你是Radio Button的话,你就应该将你认为是一组的组合成一组, 这样的话就不会几个RadioButton可以同时选中。
如果你设置的控件不是Control形式,你就要使用如下语句 GetDlgItem(IDC_BUTTON_RADIO1)->SetCheck(TRUE);
CheckRadioButton(ID_1,ID_10,ID_3);表示ID_1到ID_10的RADIO为一组,而选中了ID_3,单选。 但ID_1到ID_10必须是连续的。
本文来自CSDN博客,转载请标明出处:>
一般的radio button 都是默认的为 auto,在同为一组的时候点另一个会取消先前选中的那个。
若要实现你所说的过程,需要取消 auto 属性。
再为你的这个radio button 添加一个 CButton 类的变量,假设ID为ID_RADIO1,变量名为m_radio1。
不过通过类向导好像无法添加,这时可以手动添加:
1在头文件中这个位置添加声明
// Dialog Data
//{{AFX_DATA(CTestDlg)
enum { IDD = IDD_TEST_DIALOG };
CButton m_radio1;//手动添加的部分
//}}AFX_DATA
2在CPP文件中的DoDataExchange函数中添加如下代码:
void CTestDlg::DoDataExchange(CDataExchange pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTestDlg)
DDX_Control(pDX, IDC_RADIO1,m_radio1);//手动添加的部分
//}}AFX_DATA_MAP
}
这时就为你的 radio button 关联了一个变量
然后为你的这个控件通过类向导添加一个BN_CLICKED消息响应
在函数中添加以下代码:
void CTestDlg::OnRadio1()
{
// TODO: Add your control notification handler code here
if (m_radio1GetCheck()==0)
m_radio1SetCheck(1);
else
m_radio1SetCheck(0);
}
原理是这样的:
获得它的选中状态,若为选中,则不选中它;反之类似。
以上就是关于VC中radiobutton状态查询全部的内容,包括:VC中radiobutton状态查询、VC++ 获取文件名求高手解答、VC++怎么检查一个组框内的几个单选按钮的状态等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)