非常感谢各位的回答,但事实上问题并不是这么简单,大家说的,我跟大家一样,都了解了的内容.下面我来说说我真正需要知道的东西:
界面上有100个窗口(控件也是窗口),我的鼠标移动了一下,这时候,windows是怎么找到要触发鼠标移动消息的窗口的呢,我猜测一下(只考虑当前进程的主线程的消息队列):遍历所有窗口,根据窗口的left,top,width,height来判断当前鼠标是不是在此窗口当中,如果是,投放相关信息到对应的消息队列,生成一笔消息.
如果是这样,那么问题就来了:
1.遍历所有窗口,找到鼠标点在其区域之内的窗口,这样效率是不是太低了,windows是不是有更好的处理方法呢,毕竟上面只是我的理解.
2.如果windows是通过left,top,width,height来判断当前鼠标是不是在此窗口当中的,那么如果是不规则的窗口,是不是投放的消息队列会产生问题呢.比如,我有一个对象,是一根斜线,大家想想,它触发鼠标移动消息,应该是鼠标落在线条上面的时候,但是,我们通常做的是自己在WM_MOUSEMOVE里面去做判断,也就是说,其实WM_MOUSEMOVE已经触发了,windows还是按照对象的矩形区域来产生的WM_MOUSEMOVE消息,那么我们有没有更好的处理方式,就是说,改变对象的区域,让windows产生WM_MOUSEMOVE能够精确到我们想要的区域呢.
也不知道大家理解了没有,姑且说之!