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函数中不处理该

阅读剩余部分

相关阅读 >>

.net中json数据进行序列化和反序列化操作分析

c# 数组作为参数传递出现的问题解决

.net 中的程序集

c#cs与bs数据请求交换

.net core如何在新的项目系统中(.csproj)发布可执行文件

新手学习.net编程计划-1

.net framework类库的主要功能是什么?

c#连接ftp时路径出现问题的解决方法

c#如何计算传入的时间距离今天的时间差的实例分享

c#中关于扩展方法的实例分析

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




打赏

取消

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

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

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

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

评论

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