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 的话,就只能选中,无法触发单击事件,为什么啊?
展开
 我来答
yyhian
2012-01-13 · TA获得超过590个赞
知道小有建树答主
回答量:134
采纳率:0%
帮助的人:206万
展开全部
看你点的对象是否映射了消息啊。
比如说一个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消息。
149032105
2012-01-14 · TA获得超过756个赞
知道小有建树答主
回答量:1029
采纳率:0%
帮助的人:668万
展开全部

WM_LBUTTONDOWN

WM_LBUTTONUP
之间加个时间差.比如停个10ms再执行
追问
我在网上找的时候发现 VB你们似乎没有 WM_CLICK 这个消息, 会不会是C#独有的,VB需要用WM_LBUTTONDOWN

WM_LBUTTONUP 来模拟,C#不用, 我在之间加了 sleep也不行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式