一个控件类怎么获取父窗口的点击事件,鼠标点击不在控件下
1个回答
展开全部
我期望做到的效果是,我在CMyListBox中能感知Dialog上的点击事件(鼠标不点击在ListBox上)
这样子我可以把ListBox隐藏。
如果点击到Dialog的别的控件,可以用killfocus事件感知,但是如果直接点击在Dialog上,我就没有办法了。
------解决方案--------------------------------------------------------
dlg送个消息给它就行了。
------解决方案--------------------------------------------------------
你想隐藏CMyListBox,你现在是想通过CMyListBox自身获取到鼠标点父窗口的其他地方了,再隐藏自己。换一种思路,父窗口的鼠标单击事件里,判断鼠标不在CMyListBox上的话,隐藏CMyListBox。
也就是说,由CMyListBox自己控制隐藏与否,改成由父窗口来控制CMyListBox的隐藏与否。
------解决方案--------------------------------------------------------
每个窗口都有自己的消息队列,每个窗口所有的消息都是由自身的消息队列和消息处理程序来维护,一个窗口所得到的消息不可能被传到另一个窗口,除非该窗口主动将自己得到某个消息的信息告诉另一个窗口!
有一点须注意,首先要将消息和事件这两个概念区分清楚,消息是指由窗口自身状态变化所发生的,而事件是由子窗口(或称作控件)发送给父窗口的,也就是先前所说的窗口主动将自己得到某个消息的信息告诉另一个窗口!
比如单击,先自定义一个消息,在父窗口类中为单击消息添加消息处理函数 OnLButtonDown(),然后再在该函数中添加SendMessage(......)语句,将自定义消息传送给目标窗口(控件也是窗口)
------解决方案--------------------------------------------------------
将父窗口收到的消息转发一份给子窗口
------解决方案--------------------------------------------------------探讨引用:每个窗口都有自己的消息队列,每个窗口所有的消息都是由自身的消息队列和消息处理程序来维护,一个窗口所得到的消息不可能被传到另一个窗口,除非该窗口主动将自己得到某个消息的信息告诉另一个窗口!
有一点须注意,首先要将消息和事件这两个概念区分清楚,消息是指由窗口自身状态变化所发生的,而事件是由子窗口(或称作控件)发送给父窗口的,也就是先前所说的窗口主动将自己得到某个消息的信……
------解决方案--------------------------------------------------------鼠标捕获
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询