文章类型: VC&C++
关键词: VC,按钮,Tabstop,属性,按钮,背景色,变化,混乱,控件,刷新
内容摘要: VC中由于按钮的Tabstop属性造成的控件背景色在点击时刷新变化混乱的问题

VC中由于按钮的Tabstop属性造成的控件背景色在点击时刷新变化混乱的问题

2017/11/28 10:03:41    来源:apple    阅读:

最新做这样一个界面,下图中的前两个图(见下图1、图2)切换显示效果是正常的,但是第三个图(见下图3)显示切换是不正常的,本来当点击“取消”按钮时,“未带”按钮的背景颜色不应该变化,但是现在却发生了变化,经过分析,代码没有发现问题,经过一番查找原因,结果得出“未带”按钮在点击“取消”按钮后获得了焦点,也就是说,要解决这个问题,就要想法使点击“取消”按钮后,“未带”按钮不能获取焦点,这里为啥“未带”按钮会自动获得焦点呢?!忽然想到了按钮的属性Tabstop,该属性作用是“指定用户可以用Tab键移动到该控件”,如下图4,当其值为"true"时,表示可以使用Tab键移动到该控件。

分析产生该问题的原因,由于当鼠标点击按钮“取消”后,启用该属性"Tabstop"的值为"true"后,系统焦点会自动移动到下一个Tab键设置的tab值顺序的按钮,即“未带”按钮,结果由于代码中设置了当鼠标操作按钮的变色属性值,结果触发了该代码,造成了按钮背景、字体发生了改变。

解决方案:将涉及到的按钮的属性Tabstop值改为"False"即可解决。或者点击“取消”按钮后使“未带”按钮失去焦点也可以,可以使用“m_btn_oppointment_not_take.PostMessage(WM_KILLFOCUS, 0, 0);”使其失去焦点。

失去焦点可以使用以下几种:

GetDlgItem(要失去焦点的控件名)->PostMessage(WM_KILLFOCUS, 0, 0);

::SendMessage(GetDlgItem(要失去焦点的控件名)-> m_hWnd,WM_KILLFOCUS,-1,0);

SendDlgItemMessage(要失去焦点的控件名,WM_KILLFOCUS,0,0);

获得焦点:

GetDlgItem(另一个控件名)->SetFocus();

当然也可以用控件的属性Tabstop,设置值为"true"后再设置顺序号来激活焦点。如下图5

blob.png blob.png blob.png blob.png blob.png

 (图1)     (图2)      (图3)       (图4)        (图5)

↑ 上一篇文章:ACCESS数据库分页的SQL语句 关键词:ACCESS,数据库,分页,SQL语句 发布日期:2017/11/27 15:28:34
↓ 下一篇文章:access什么时候用双引号啊,如果不加有没有影响 关键词:access,双引号,影响 发布日期:2017/11/28 14:39:29
相关文章:
vc 创建动态菜单及其响应函数 关键词:vc,动态菜单,菜单响应,动态菜单响应,动态按钮响应 发布日期:2016-12-06 15:59
怎样去掉 vc++ 的 对话框 右上角的关闭按钮 关键词:去掉,vc++,,对话框,右上角,关闭按钮 发布日期:2018-09-17 14:46
VC中设置button按钮的Visible和Disabled可用和不可用 关键词:VC中设置button按钮的Visible和Disabled可用和不可用 发布日期:2016-08-30 10:48
相关目录:.NETVC&C++软件开发
我要评论
正在加载评论信息......