[弱问一个] 关于 ComboBox 请问如何 获取选中 ComboBox 编辑框的消息,ON_CBN_SETFOCUS 在点中 编辑框 或者 下拉框的时候都会响应,但是我需要分别响应,请教一下如何进行处理? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 “在点中编辑框或者下拉框的时候都会响应”只有能输入的控件才有focus编辑框可以输入所以有focus,下拉框时编辑框先得到focus,所以试试CBN_DROPDOWN 只是 CBN_SETFOCUS 响应在 CBN_DROPDOWN 之前, 这样我还是无法对编辑框单独响应。。 CBN_SETFOCUS : Indicates the combo box is receiving the input focus.CBN_DROPDOWN : Indicates the list box of a combo box is dropping down. 同上,假如点下拉按钮,CBN_SETFOCUS 在 CBN_DROPDOWN 之前就会响应 在setfocus中试试.使用BOOL GetDroppedState( ) const;可以查到 当setfocus时向窗口POST一个自定义消息,在自定义消息响应函数中判断是否已下拉,没有下拉就是编辑框输入状态,下拉了就是列表选择状态。一定要用PostMessage,这样能保证即使点击了下拉按钮,dropdown消息也会在自定义消息之前发生。如果是编辑框获得焦点,消息顺序是:setfocus custom如果是下拉按钮被点击,消息顺序是:setfocus dropdown custom 没成功。。 获得焦点在下拉之前,所以在setfocus的时候还没有下拉消息 感谢大拿关注! 但是照做的顺序如下: 当文本框获得焦点,消息响应顺序是:setfocus custom当下拉按钮被点击,消息响应顺序是:setfocus custom dropdown 看起来setfocus响应完了才有dropdown 发出。难道这都要用定时这种丑陋的方法来做??。 这种现象只能说明一个问题,dropdown消息也是被POST出来的(按照常理通常会用SEND),但并不是没有其它办法。还是POST自定义消息,在自定义消息响应函数里先调用PeekMessage(&msg, hwndParent, CBN_DROPDOWN, CBN_DROPDOWN, PM_NOREMOVE)检测消息队列里是否存在dropdown消息,不使用GetState函数判断。但这种方法也不能百分百保证正确,可能POST的是另一个消息,在这个消息里SEND了dropdown。实在不行,就直接在SetFocus里判断鼠标位置吧。 感谢前辈,PeekMessage似也未检索到,虽然有点猥琐,还是按鼠标位置简便。。感谢各位关注! GDI+多层绘制按钮问题 如何实现窗口的全屏 Gtalk的界面(如qq宠物)是用什么技术编写的? 请教一个有关WINSOCK.DLL的问题~~~ 8。13终于向经理说辞职了,两年来对这个公司真有点佘不得,,而前面的道路有不太明亮。。。。 关于socket api .不能在自定义累 中声明 SOCKET s 自己做个图形小类库如何?? 请问这句语句的执行过程是怎样的? 【多个三维体轮廓问题】OPENGL 显示四维数据方法 在线等 CDialog 可以有菜单吗? 服务器端网卡被堵塞,导致网络连接不通的问题 关于棋牌类游戏
只有能输入的控件才有focus编辑框可以输入所以有focus,下拉框时编辑框先得到focus,所以试试CBN_DROPDOWN
只是 CBN_SETFOCUS 响应在 CBN_DROPDOWN 之前, 这样我还是无法对编辑框单独响应。。
CBN_DROPDOWN : Indicates the list box of a combo box is dropping down.
同上,假如点下拉按钮,CBN_SETFOCUS 在 CBN_DROPDOWN 之前就会响应
如果是编辑框获得焦点,消息顺序是:setfocus custom
如果是下拉按钮被点击,消息顺序是:setfocus dropdown custom
没成功。。 获得焦点在下拉之前,所以在setfocus的时候还没有下拉消息
感谢大拿关注! 但是照做的顺序如下:
当文本框获得焦点,消息响应顺序是:setfocus custom
当下拉按钮被点击,消息响应顺序是:setfocus custom dropdown 看起来setfocus响应完了才有dropdown 发出。
难道这都要用定时这种丑陋的方法来做??。
PeekMessage(&msg, hwndParent, CBN_DROPDOWN, CBN_DROPDOWN, PM_NOREMOVE)
检测消息队列里是否存在dropdown消息,不使用GetState函数判断。但这种方法也不能百分百保证正确,可能POST的是另一个消息,在这个消息里SEND了dropdown。
实在不行,就直接在SetFocus里判断鼠标位置吧。
虽然有点猥琐,还是按鼠标位置简便。。
感谢各位关注!