windows窗口控件点击——CheckButton(一)

本文探讨了在Windows编程中如何模拟点击一个名为'无边距打印'的特殊Button控件,实际上是CheckBox类型。通过研究控件样式,发现Button包括多种风格如BS_3STATE、BS_AUTO3STATE等。最终,使用ButtonSetCheck()函数解决了问题,能够成功改变CheckBox的选中状态。
摘要由CSDN通过智能技术生成

试图通过发送消息到一个button控件来模拟鼠标点击,遇到了点小麻烦,一直没有成功。该控件如图:

一开始,我是按照之前点击button控件的情况来处理,先是用FindWindowEx()查找到该控件的句柄,通过句柄和GetDlgCtrlID()函数来获取此button控件的ID,得到句柄和I控件D后,就可以对此控件发送消息了,代码如下:

hBtn = ::FindWindowEx(hWnd, NULL, NULL, _T("无边距打印"));                                      //通过控件的标题来查找句柄
IDn = ::GetDlgCtrlID(hBtn);

::SendNotifyMessage(hWnd, WM_COMMAND, MAKELONG(IDn, BN_CLICKED), (long)hBtn);

这段代码没有生效,但是当我把上面代码替换成该窗口中的其他Button控件,如OK按钮,却是可以成功点击到的。

难道”无边距打印“那个控件不是Button类型?但显然不对,因为在spy++中明显能看到这个控件是一个Button。我又试了PostMessage(),SendMessage()等各种消息发送函数,也试了MK_LBUTTON等鼠标点击消息,但都以失败告终。不过我想,这种前面有个打勾的框框和一般的button外观看起来就差异很大,也许Button会有不同的类型。于是我在VS的toolbox里面找了一下,找到了这种前面有个小框框的控件,原来它的名字叫做CheckBox。在MSDN搜索了一下,看到了这个:

MFC Library Reference
Button Styles

 

  • BS_3STATE   Same as a check box, except that the box can be dimmed as well as checked. The dimmed state typically is used to show that a check box has been disabled.

  • BS_AUTO3STATE   Same as a three-state check box, except that the box changes its state when the user selects it.

  • BS_AUTOCHECKBOX   Same as a check box, except that a check mark appears in the check bo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值