自绘ComboBox下拉条自动隐藏的问题

小马喝水 2010-07-05 08:14:48
我用一个Edit和一个ListBox模拟一个ComboBox控件,现在点击下拉按钮,展开下拉列表,如果此时鼠标在其他地方点了一下,我怎么截获这个消息,然后将下拉条隐藏起来,还有怎么能让ListBox模拟的下拉条在对话框的最下面展开后,可以展开到对话框的外面去。希望知道的大侠能帮帮忙!,
...全文
418 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
小马喝水 2010-07-07
  • 打赏
  • 举报
回复
谢谢大家热心的帮助,现在虽然还没有搞定,但是已经有思路了,7楼的例子和我的刚好符合,原理和大家说的差不多,结贴了。
zwfgdlc 2010-07-07
  • 打赏
  • 举报
回复
首先应该是ListBox失去焦点。
Eleven 2010-07-07
  • 打赏
  • 举报
回复
listBox的父窗口可以指定为桌面SetParent()
caozoe 2010-07-07
  • 打赏
  • 举报
回复
ListBox 使用 WS_POPUP 样式
ListBox包含一个指向Edit的指针。

我之前做DateTimeCtrl的思路就是这样。
caozoe 2010-07-07
  • 打赏
  • 举报
回复
killfocus消息
向立天 2010-07-07
  • 打赏
  • 举报
回复
是不是可以考虑用SetCapture捕获鼠标消息
eria860717 2010-07-07
  • 打赏
  • 举报
回复
以前遇到过关于自制ComboBox的例子
这里给楼主说下吧,第一个问题没看太懂..

重点是第二个问题
取得ListBox的句柄,然后调用SetParent将他的父窗体设置为桌面
这样就可以让下拉框可以展开到对话框的外面去了

好像还需要设定下窗口的样式,具体什么样式忘记了,,楼主自行看下
小马喝水 2010-07-06
  • 打赏
  • 举报
回复
怎么沉下去了呢。大侠帮帮忙啊
sanguomi 2010-07-06
  • 打赏
  • 举报
回复
我以前自己写的一个下拉,用了个消息钩,鼠标左键按下时候,先查看是否下拉了,同时判断点击的位置在不在下拉框的客户区里,如果不在,下拉收起
z4none 2010-07-06
  • 打赏
  • 举报
回复
我觉得要让 ListBox 能展开到窗口外,
你可能得把它放到一个新的无边框 TOPMOST 窗口上去,然后移动这个窗口到展开的位置,
如果它失去焦点 (WM_ACTIVATE 的 WA_INACTIVE)就把它关闭
。。。
这样实现起来好像很复杂,。想想就麻烦
zxg_1023 2010-07-06
  • 打赏
  • 举报
回复
http://www.codeproject.com/KB/combobox/advcombobox.aspx
小马喝水 2010-07-05
  • 打赏
  • 举报
回复
二楼提供的代码,里面的控件类是继承于ComboBox,解决不了我的这个问题
小马喝水 2010-07-05
  • 打赏
  • 举报
回复
我这个做的是个类的,消息处理肯定应该在类里面处理的,不能在窗体消息函数中处理,二楼的提供的代码我正在看,先谢谢大家的热心帮忙!
MoXiaoRab 2010-07-05
  • 打赏
  • 举报
回复
在窗体Proc消息处理中判断鼠标点击是不是在List外面,取得List的左上角坐标和长宽,将鼠标坐标和这个矩形对比,如果在List的轮廓中,就将其隐藏
雪影 2010-07-05
  • 打赏
  • 举报
回复
quantumcat 2010-07-05
  • 打赏
  • 举报
回复
这个比较麻烦,需要自己drawitem了

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧