C#中如何使用SendMessage?


本文摘自PHP中文网,作者零下一度,侵删。

在C#中,程序采用了的驱动采用了事件驱动而不是原来的消息驱动,虽然.net框架提供的事件已经十分丰富,但是在以前的系统中定义了丰富的消息对系统的编程提供了方便的实现方法,因此在C#中使用消息有时候还是大大提高编程的效率的。

 1 定义消息

在c#中消息需要定义成windows系统中的原始的16进制数字,比如

const int WM_Lbutton = 0x201; //定义了鼠标的左键点击消息

public const int USER = 0x0400 // 是windows系统定义的用户消息


 2 消息发送


  消息发送是通过windows提供的API函数SendMessage来实现的它的原型定义为

1

2

3

4

5

6

7

[DllImport("User32.dll",EntryPoint="SendMessage")]

  private static extern int SendMessage(

         int hWnd,   // handle to destination window

         int Msg,    // message

         int wParam, // first message parameter

         int lParam // second message parameter

   );

3 消息的接受

 在C#中,任何一个窗口都有也消息的接收处理函数,就是defproc函数

你可以在form中重载该函数来处理消息

1

2

3

4

5

6

7

8

9

10

11

12

13

14

protected override void DefWndProc ( ref System.WinForms.Message m )

{

switch(m.msg)

{

case WM_Lbutton :

 ///string与MFC中的CString的Format函数的使用方法有所不同

 string message = string.Format("收到消息!参数为:{0},{1}",m.wParam,m.lParam);

 MessageBox.Show(message);///显示一个消息框

 break;

default:

 base.DefWndProc(ref m);///调用基类函数处理非自定义消息。

 break;

}

}

其实,C#中的事件也是通过封装系统消息来实现的,如果你在DefWndProc函数中不处理该

阅读剩余部分

相关阅读 >>

极客学院c#视频教程的资料推荐

关于.net(c#)正确读取中文编码文件的实例教程

.net是什么语言 视频

c#与vb.net混合开发测试的详细介绍(图文)

c#中关于foreach遍历使用的深入理解

.net core 和 .net .framework 相比哪个速度快?

.net是否真的被国内市场嫌弃?

详细分析.net?core?以及与?.net?framework的关系(图)

c#编写windows服务程序的图文详解

c#通过kd树进行距离最近点的查找的实例分析

更多相关阅读请进入《SendMessage》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...