请问mouse_event与PostMessage鼠标的作用有哪些不同?
有一个程序,用mouse_event点击有响应,可是用PostMessage却不可以。用Spy++察看mouse_event作用下该窗口接受了哪些消息,发现其中的WM_LBUTTONDOWN和WM_LBUTTONUP消息跟我Post的一模一样。请问此时为什么不能用PostMessage?除了上述两个消息外,后来我还Post了WM_SETCURSOR、WM_ACTIVATE等其他一些我认为不大有用的消息,结果还是不行。在Spy++上我已经看不到其他更有价值的消息了,像WM_NCHITTEST这一类不会有什么影响吧。可是为什么mouse_event就可以,PostMessage就不行呢??? 问题点数:20、回复次数:12Top
1 楼believefym(feng)回复于 2006-07-27 21:52:05 得分 0
试试SendMessageTop
2 楼szm54(雨淡风秋)回复于 2006-07-27 22:06:08 得分 0
试过了
不行Top
3 楼ChrisAK(LOLICON)回复于 2006-07-28 00:29:29 得分 0
在SendMessage前先SetCapture试试Top
4 楼szm54(雨淡风秋)回复于 2006-07-28 11:56:49 得分 0
还是不行
很奇怪。请各位高手介绍一下,这有可能是什么原因造成的?如何用PostMessage代替mouse_event?难道mouse_event就不可代替吗?Top
5 楼szm54(雨淡风秋)回复于 2006-07-28 14:46:46 得分 0
自己顶一下!Top
6 楼SoLike(思危)回复于 2006-07-28 15:57:26 得分 0
mouse_event 是个老函数,现在已经用sendinput代替了,但两者的用途插不多,就是想底层的输入队列中插入插入鼠标消息(sendinput还可以插入键盘消息)。
而postmessage是向窗口所属线程的消息队列中插入消息。
两者发送消息的对象不一样, mouse_event要更底层。Top
7 楼frank_necsthz(磊磊)回复于 2006-07-28 16:03:33 得分 0
一个是事件,一个消息。事件直接有结果,消息则不一样,也需要处理消息Top
8 楼Mackz(在相互)回复于 2006-07-28 16:25:23 得分 0
PostMessage是针对窗口的,而mouse_event是针对系统的。想不通既然系统提供了这个函数,又为什么非得模拟一个。Top
9 楼szm54(雨淡风秋)回复于 2006-07-29 21:03:28 得分 0
问题在于事件最终也是通过消息实现的呀。系统接到一个鼠标动作后,不是把消息发给了程序,程序才执行的吗。mouse_event的最终结果应该也是让窗口得到了消息。我就是想不通为什么通过发送消息的方法来处理就是不行。是不是我对系统的工作原理理解有误啊?Top
10 楼SoLike(思危)回复于 2006-07-30 09:59:01 得分 0
事件产生后,系统可能要进行一系列的处理动作,最后窗口才会得到消息。Top
11 楼SoLike(思危)回复于 2006-07-30 12:11:02 得分 0
就像猪肉和红烧肉的关系。Top
12 楼shilong(银羽 www.ylog.net)回复于 2006-12-14 22:04:51 得分 0
因为那程序没有处理鼠标消息
而是直接通过硬件或者其它底层的办法获取鼠标信息的Top




