透析C#事件本质

开发 后端
C#事件本质上是对消息的封装,是IDE编程环境为了简化编程而提供的有用的工具。本文就通过事件、消息透析了C#事件本质。

C#事件本质上是对消息的封装,是IDE编程环境为了简化编程而提供的有用的工具。这个封装是在窗体过程中实现的。每种IDE封装了许多Windows的消息,例如:

事件

消息

OnActivate

WM_ACTIVATE

OnClick

WM_XBUTT

ONDOWNOnCreate

WM_CREATE

OnDblClick

WM_XBUTT

ONDBLCLICKOnKeyDown

WM_KEYDOWN

OnKeyPress

WM_CHAR

OnKeyUp

WIN_KEYUP

OnPaint

WM_PAINT

OnResize

WM_SIZE

OnTimer

WM_TIMER

了解了这一点后,我们完成可以封装自己的C#事件。通过上面的介绍,相信各位已经对Windows消息机制有了一定的理解了。通过Windows消息编程,我们不但可以实现很多常规功能,而且可以实现很多IDE类库没有提供的功能;另外,我们还可以通过消息钩子,对消息进行截获,改变其默认的处理函数,从而突破平台或软件功能的限制,极大的扩展程序的功能;我们还可以修改默认的窗体过程,按自己的要求来响应消息;或者自定义消息,实现程序之间的即时通讯等等。通过更加深入的学习,我们还会接触到更多与Windows消息机制相关其它Windows相对比较底层的知识,如果能够这样,蓦然回首,你会发现自己原来离“高手”不远了。

窗体过程实际上是一个回调函数。所谓的回调函数,实际上就是由Windows操作系统或外部程序调用的函数。回调函数一般都有规定的参数格式,以地址方式传递给调用者。窗口过程中是Windows操作系统调用了,在一个窗口创建的时候,在分配窗体句柄的时候就需要传入回调函数地址。那为什么我们平时编程看不到这个回调函数呢?这是由于我们的编程工具已经为我们生成了默认的窗体过程,这个过程的要做的事情就是判断不同的消息类型,然后做出不同的处理。例如可以为键盘或鼠标输入生成C#事件等。 

【编辑推荐】

  1. 学习C#消息:循序渐进
  2. 解惑答疑:C#委托和事件
  3. 学习C#实现HTTP协议:多线程文件传输
  4. 进一步接触C#委托与事件
  5. 浅析四种C#转换的区别
责任编辑:book05 来源: hi.baidu
相关推荐

2009-08-07 17:57:26

C#定义事件应用

2009-08-27 16:53:05

C# using作用

2009-08-12 15:20:21

C#事件处理

2009-08-18 10:48:25

C#事件

2009-08-27 18:02:22

C#事件处理

2009-08-28 13:12:02

C# Page_Err

2009-08-13 10:42:31

C#窗体拖动事件

2011-04-25 09:22:44

C#事件

2009-08-28 14:28:25

C# Applicat

2009-08-12 18:28:09

C#事件处理程序

2009-09-07 04:19:56

C#窗体事件

2009-09-07 15:31:49

C#支持事件

2009-09-10 18:18:42

C# Button

2009-08-04 09:56:46

C#事件处理自定义事件

2010-01-19 14:28:41

C++ main()函

2010-01-18 09:39:25

C++语言

2010-01-22 13:45:36

C++代码

2009-08-27 16:53:01

C#委托C#事件

2009-08-31 09:20:37

C#事件注册和注销

2009-08-31 18:01:41

C#接口事件
点赞
收藏

51CTO技术栈公众号