windows消息机制与ASP.net winform控件消息传递之鼠标点击click事件

本文深入探讨了Windows系统中消息机制的工作原理,详细介绍了鼠标点击事件的处理流程:从用户操作开始,经由操作系统消息队列分配给相应控件,直至最终触发控件的Click事件并调用注册的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

window系统是一个消息驱动的系统, windows操作系统本身有自己的消息队列,消息循环,它捕捉键盘,鼠标的动作生成消息,并将这个消息传给应用程序的消息队列。
当用户用鼠标click桌面时,其实用户是不能直接接触到某个控件的。表面上看,的确是用户用鼠标点击了一下按钮。而实际上,当用户按下鼠标左键的时候是通过鼠标向Windows操作系统发送了一个“左键单击[x,y]点”消息,然后Windows再根据[x,y]的位置把这个消息分配(路由)给应该接收它的控件——这就是Windows的消息传递/路由机制。
同理,当你移动鼠标的时候,看似好像指针在随你的意愿移动,而实际上是你的鼠标在以每秒钟几百次的频率把当前位置汇报给Windows操作系统,然后Windows再把一个漂亮的指针“画”在屏幕上给你看。
然而这些内容对于C#程序员都是不可见的——都被封装成了“事件”。因此,从Windows系统的机理上讲,事件机制就是对Windows消息传递机制的包装。

从windows消息机制来看,鼠标点击的流程是这样:
用户在桌面点击了鼠标,根据前面所述,windows系统根据鼠标移动的轨迹算出鼠标现在的坐标,win系统根据坐标位置把click消息告知当前活动窗口程序消息循环.
这里写图片描述

当前窗口消息循环获取到click消息后则自动调用该控件control类对象的onclick函数(控件对象的onclick函数是对control类onclick的重写,但我们看不到如何自动调用onclick函数这个过程),在onclick函数体内触发该对象的click事件。
这里写图片描述

click事件如果有注册方法,则调用该注册方法.
这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值