C#中使用SendMessage

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

 1 定义消息

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

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

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

 2 消息发送

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

 [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中重载该函数来处理消息

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;
}

相关文章

精彩推荐