复选框checkbox初始化问题。急急急!!!!!! 我从控件列表中直接拖拽到窗口一个复选框checkbox 我程序中已经给这个复选框设置了一个全局变量。别的什么都没做。没有实例化它。但是我想打开窗口的时候。这个复选框默认为勾选状态。我应该怎么做?一个很基础的小问题。可是我真的不会啊!!求大牛 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果绑定的是BOOL变量,则在构造函数内将其值初始化爲TRUE;如果是控件变量,则在OnInitDialog()中调用SetCheck(BST_CHECKED)方法。多看看MSDN,或者google/baidu。 LS正解:如果你的checkbox绑定的变量是bool类型,那么只需要 m_checkbox1=TRUE;//false为取消UpdateData(FALSE);//必须要如果是控件类型的m_checkbox2.SetCheck(TRUE); 楼上,你写的两点有值得商榷的地方。首先,构造函数内给绑定的BOOL变量附上初值後是不需要也不可以调用UpdateData(FALSE);如果在控件创建完成后再赋值,是必须调用UpdateData(FALSE)的;其次,SetCheck()的参数是int类型的,直接写TRUE虽然达到效果但不够严谨,具体可以参见MSDN的注解。 ((CButton*)GetDlgItem(资源编号))->SetCheck(BST_CHECKED)checkbox就是属于CButton的范畴的,不要惊讶 有道理那能问下。setcheck().只是对复选框和单选按钮有效,它是用来设置复选框或者单选按钮的状态的。它的参数 可以BST_CHECKED ,TRUE,1这3者有什么关系。也没有发现在那里有指示他们 相等的。为什么结果却是一样的? 请问下3楼的:setcheck().只是对复选框和单选按钮有效,它是用来设置复选框或者单选按钮的状态的。它的参数 可以BST_CHECKED ,TRUE,1这3者有什么关系。也没有发现在那里有指示他们 相等的。为什么结果却是一样的? 回6L先看一下MSDN怎么说的http://msdn.microsoft.com/zh-cn/library/31deb72x(v=vs.100).aspx其次setCheck不仅仅对复选框和单选按钮有效最后之所以传入BST_CHECKED ,TRUE,1效果一样是因为VC中定义了以下几个宏#define TRUE 1#define BST_UNCHECKED 0x0000#define BST_CHECKED 0x0001#define BST_INDETERMINATE 0x0002使用1作为参数是没有问题的,但是这样降低了代码的可读性和易理解性使用TRUE作为参数效果虽然相同,但是这样做是有风险的,因为不是所有的编译器都是#define TRUE 1,其次会让别人误以为这个函数的参数时BOOL类型的。 只要改三个地方void CTestDlg::DoDataExchange(CDataExchange* pDX){ DDX_Check(pDX, IDC_CHK, m_bChk); // 控件ID绑定BOOL型变量}CTestDlg::CTestDlg(){ m_bChk = TURE; // 为绑定的变量设定初值}CTestDlg::OnInitDialog(){ UpdateData(FALSE); // 根据绑定的值更新控件} Tab控件的内嵌属性页的edit里面的数据怎样获取呀??? 求救,在线等!列表框的Header怎么分行显示?? 知道了某个程序的虚拟地址,怎么知道程序的偏移地址? 急 奇怪的_variant_t SQLConfigDataSource函数配置SQLServer数据源的问题 我的句柄怎么变成0了? 请问怎么判断一个进程是否停止响应?在线等。。。 滚动条的问题,奇怪! gsaop能以二进制格式发送数据吗????????? ADO的缺点是否是: 不能与ODBC一样跨平台运行? C++实现UDP可靠传输(一对多通信)? 同一个父窗口中的多个子窗口显示问题
多看看MSDN,或者google/baidu。
LS正解:
如果你的checkbox绑定的变量是bool类型,那么只需要
m_checkbox1=TRUE;//false为取消
UpdateData(FALSE);//必须要如果是控件类型的
m_checkbox2.SetCheck(TRUE);
首先,构造函数内给绑定的BOOL变量附上初值後是不需要也不可以调用UpdateData(FALSE);如果在控件创建完成后再赋值,是必须调用UpdateData(FALSE)的;
其次,SetCheck()的参数是int类型的,直接写TRUE虽然达到效果但不够严谨,具体可以参见MSDN的注解。
((CButton*)GetDlgItem(资源编号))->SetCheck(BST_CHECKED)checkbox就是属于CButton的范畴的,不要惊讶
有道理
那能问下。
setcheck().只是对复选框和单选按钮有效,它是用来设置复选框或者单选按钮的状态的。
它的参数 可以BST_CHECKED ,TRUE,1这3者有什么关系。
也没有发现在那里有指示他们 相等的。为什么结果却是一样的?
setcheck().只是对复选框和单选按钮有效,它是用来设置复选框或者单选按钮的状态的。
它的参数 可以BST_CHECKED ,TRUE,1这3者有什么关系。
也没有发现在那里有指示他们 相等的。为什么结果却是一样的?
先看一下MSDN怎么说的http://msdn.microsoft.com/zh-cn/library/31deb72x(v=vs.100).aspx
其次setCheck不仅仅对复选框和单选按钮有效
最后之所以传入BST_CHECKED ,TRUE,1效果一样是因为VC中定义了以下几个宏
#define TRUE 1
#define BST_UNCHECKED 0x0000
#define BST_CHECKED 0x0001
#define BST_INDETERMINATE 0x0002
使用1作为参数是没有问题的,但是这样降低了代码的可读性和易理解性
使用TRUE作为参数效果虽然相同,但是这样做是有风险的,因为不是所有的编译器都是#define TRUE 1,其次会让别人误以为这个函数的参数时BOOL类型的。
{
DDX_Check(pDX, IDC_CHK, m_bChk); // 控件ID绑定BOOL型变量
}CTestDlg::CTestDlg()
{
m_bChk = TURE; // 为绑定的变量设定初值
}CTestDlg::OnInitDialog()
{
UpdateData(FALSE); // 根据绑定的值更新控件
}