我建了一个对话框,在对话框上建了一个ListView列表视图控件,又建了一个组合框(ComboBox),它们都是以对话框为父窗口。当我在程序中把组合框移动到ListView上面时,发现单击组合框,不能展开列表,更不能选择。怎么试也没有办法。后来的在程序中插入了Beep函数,发现单击组合框的时候,列表框(ListView)的CLICK被触发。这个怎么办?按理说组合框覆盖在列表框上面,单击组合框,应该是组合框收到CLICK消息,然后打开列表才对,现在是列表框收到CLICK消息,当然打不开组合框了。这个怎么办呢?
你点击的时候,是listview的窗口区域。
消息传递的时候,先传给父窗口,在传到字窗口,你的listview和combobox父窗口都是同一个
你可以这样做:
wndCombobox.SetWindowPos(ListViewHwnd, ) ,或者查一下 MSDN 关于SetwindowPos的用法。
把 combox的zorder 提到 listview 之前。这样,点击的时候,就会点到 combox上了。第2中方法就是简单的 如上面我提到的,combox.create(listviewHwnd) , 把 listview 当作combox的父窗口,这样就可以了。
edit 为什么可以,因为edit 只有一个窗口,而 combox 有2 个窗口,一个 dropdown的窗口,是 combox 内部创建的。点一下那个箭头,是show一下那个dropdown 的window。
你可以去 bbs.aisnote.com 提问,直接给你个例子玩玩。
这样设计是不合理的
listctrl是可以做扩展的
你搜XListCtrl
但是现在思路严重有问题
我说的XListCtrl你看了么?
不能实现你的需求么
XListCtrl确实是基于MFC的
虽然你用SDK的方法完全可以做出一模一样的东西
而且其实你用的应该也就是C++语言
不过如果说让你去研究XListCtrl怎么在SDK下实现确实太不负责任了