文章类型: VC&C++
关键词: VC,动态创建,CButton,单选按钮,复选按钮,为何,总是,禁用状态,BS_CHECKBOX,BS_AUTOCHECKBOX,BS_RADIOBUTTON,BS_AUTORADIOBUTTON
内容摘要: 在VC中使用CButton来动态创建的单选按钮、复选按钮为何总是禁用状态

在VC中使用CButton来动态创建的单选按钮、复选按钮为何总是禁用状态

2017/10/18 14:45:34    来源:apple    阅读:

在VC的Windows界面上动态创建几个CButton控件,虽然创建CButton的按钮样子正常,但是按钮就始终是禁用状态,其它控件都正常,找不出问题在哪了。

下面是部分代码:

//目的:用于保存当前登录账号的拥有的角色信息。Add by 石民生 on 2017.10.11
roleCount = pDoc->loginUserRoleDic.GetCount();
if (roleCount > 1)
{
	pRadioButton = new CButton[roleCount];
	CString strText(_T(""));

	CONST UINT MAX_CHECKBOX_WIDTH = 100; // 定义CheckBox的宽度
	CONST UINT MAX_CHECKBOX_HEIGHT = 20; // 定义CheckBox的高度

	CONST UINT MAX_CHECKBOX_X_GAP = 10; // 定义CheckBox之间的水平间隔距离
	CONST UINT MAX_CHECKBOX_Y_GAP = 10; // 定义CheckBox之间的垂直间隔距离
	CRect rect;
	rect.SetRectEmpty();
	rect.bottom = 50;
	//从保存的字典中读取登录账号的角色信息加载供登录账号进行选择
	CString roleName;
	int roleID;
	int i = 0;
	POSITION pos = pDoc->loginUserRoleDic.GetStartPosition();
	while (pos)
	{
		pDoc->loginUserRoleDic.GetNextAssoc(pos, roleName, roleID);
		if (0 == (i % 2))
		{
			rect.left = 115;
			rect.top = rect.bottom + MAX_CHECKBOX_Y_GAP;
		}
		else
		{
			rect.left = rect.right + MAX_CHECKBOX_X_GAP;
		}
		rect.right = rect.left + MAX_CHECKBOX_WIDTH;
		rect.bottom = rect.top + MAX_CHECKBOX_HEIGHT;
		strText.Format(_T("%s"), roleName);
		VERIFY(pRadioButton[i].Create(strText, WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_RADIOBUTTON, rect, this, IDC_ROLE_RADIO_LOGIN_SELECT + i));
		i++;
	}

	pRadioButton[0].SetCheck(1);//默认选中该角色
}


最后查找原因,找到了出错的地方。

解决方法:

是因为在创建单选按钮时,使用了属性值为"BS_RADIOBUTTON",虽然可以创建出来单选按钮,但是为禁用状态,不能进行选择,如果改为"BS_AUTORADIOBUTTON"就正常可以使用了,即按钮是可用状态。对于复选按钮,我也进行了测试,如果在创建复选按钮时,如果使用了属性值为"BS_CHECKBOX",创建出来的复选按钮不能进行选择,即为禁用状态,如果将其替换为属性值"BS_AUTOCHECKBOX",即可正常使用,进行多选、复选。

↑ 上一篇文章:VC中文本输入框控件CEdit在运行时得到输入焦点的方法 关键词:VC,CEdit,文本输入框控件,运行,得到输入焦点,方法 发布日期:2017/10/17 16:23:25
↓ 下一篇文章:ACCESS数据库的SQL语句总结 关键词:ACCESS,数据库,SQL,语句,总结 发布日期:2017/10/18 16:18:48
相关文章:
VC动态创建控件之CButton类 关键词:VC动态创建控件之CButton类 发布日期:2017-01-24 22:15
VC 动态创建菜单 关键词:VC,动态创建菜单 发布日期:2016-12-06 16:49
VC 动态 创建 Checkbox 关键词:VC,动态,创建,Checkbox,CButton 发布日期:2017-09-29 17:57
相关目录:.NETVC&C++软件开发
我要评论
正在加载评论信息......