winfrom WM_LBUTTONDOWN+WM_LBUTTONUP模拟不了单击按钮事件
constintWM_CLICK=0x00F5;constintWM_LBUTTONDOWN=0x0201;constintWM_LBUTTONUP=0x0202;用Po...
const int WM_CLICK = 0x00F5;
const int WM_LBUTTONDOWN = 0x0201;
const int WM_LBUTTONUP = 0x0202;
用PostMessage 如果直接用WM_CLICK 的话,可以模拟出单击按钮的效果,但是如果用WM_LBUTTONDOWN +WM_LBUTTONUP 的话,就只能选中,无法触发单击事件,为什么啊? 展开
const int WM_LBUTTONDOWN = 0x0201;
const int WM_LBUTTONUP = 0x0202;
用PostMessage 如果直接用WM_CLICK 的话,可以模拟出单击按钮的效果,但是如果用WM_LBUTTONDOWN +WM_LBUTTONUP 的话,就只能选中,无法触发单击事件,为什么啊? 展开
2个回答
展开全部
看你点的对象是否映射了消息啊。
比如说一个BUTTON,它在MESSAGE MAP中映射了WM_CLICK消息。当它收到WM_CLICK时,会调用映射的方法。如果你没映射WM_LBUTTONDOWN消息,它不管收到多少次你发的消息,可它不知道收到消息后要做什么啊。
POSTMESSAGE发送的LBUTTONDOWN消息和物理鼠标的单击是有区别的。它们不是同一个消息(鼠标单击一次可以同时发送多个消息。)。所以需要你分别进行消息映射。
比如说一个BUTTON,它在MESSAGE MAP中映射了WM_CLICK消息。当它收到WM_CLICK时,会调用映射的方法。如果你没映射WM_LBUTTONDOWN消息,它不管收到多少次你发的消息,可它不知道收到消息后要做什么啊。
POSTMESSAGE发送的LBUTTONDOWN消息和物理鼠标的单击是有区别的。它们不是同一个消息(鼠标单击一次可以同时发送多个消息。)。所以需要你分别进行消息映射。
更多追问追答
追问
WM_LBUTTONDOWN +WM_LBUTTONUP 加起来不就是click么,WM_CLICK 只能针对按钮,如果不是按钮就只能用WM_LBUTTONDOWN +WM_LBUTTONUP
追答
不是的。
我们单击一次鼠标,就完成了一次CLICK动作。在做这个动作的过程中,存在着三个过程,即:鼠标刚点下(MOUSE_DOWN)、鼠标放开(MOUSE_UP)、鼠标点击完成(MOUSE_CLICK)。
系统分别让这三个过程响应不同的消息,以便我们更精确地控制消息的传递。所以发送WM_LBUTTONDOWN消息不同于发送WM_CLICK消息。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询