zoukankan      html  css  js  c++  java
  • c# 消息机制

    1.windows系统是一个消息驱动的系统,windows本身有自己的消息队列。

     系统传递消息给应用程序。

     应用程序的消息机制:应用程序的执行是通过消息驱动的。消息是整个应用程序的工作引擎。

    2.c#重新定义了Message。

      公共属性: HWnd     获取或设定消息的处理函数
               Msg      获取或设定消息的ID号
               Lparam   指定消息的LParam字段
               Wparam   指定消息的WParam字段
               Result   指定为响应消息处理函数而向OS系统返回的值

     消息被封装成了事件

        1.Run以启动当前线程上的应用程序消息循环

        2.C#中用Application类来处理消息的接收和发送的,消息的循环是由它负责的。

    3.消息驱动过程:

      1.键盘输入、鼠标移动、按动鼠标都由OS系统转换成相应的消息发送到应用程序的消息队列。

      2.分发这些消息到对应的窗体,然后由窗体的处理函数来处理。(窗体对象的第一个响应函数是对象中的protected override void WndProc(ref System.Windows.Forms.Message e)方法。再根据消息的类型调用默认的消息响应函数。)

    4.消息过滤器举例:

      第一种:重写WinProc

        protected override void WndProc(ref Message m)   
        {   
           if (m.Msg == 0x0201)   
             return;   
           else   
             base.WndProc(ref m);   
        }   
    

       第二种:不重写WinProc

    //实现消息过滤器接口   
    public class CLButtonDownFilter : IMessageFilter   
    {   
    public bool PreFilterMessage(ref Message m)   
    {   
    if (m.Msg == 0x0201)// WM_LBUTTONDOWN   
    {   
       //返回值为true, 表示消息已被处理,不要再往后传递,因此消息被截获   
       //返回值为false,表示消息未被处理,需要再往后传递,因此消息未被截获   
       return true;   
    }   
    return false;   
    }   
    }   
      
    CLButtonDownFilter MyFilter = new CLButtonDownFilter();   
    System.Windows.Forms.Application.AddMessageFilter(MyFilter);  
    
  • 相关阅读:
    计算机网络杂烩
    网络体系、网络模型其他
    数据通信(系统)的物理要素
    数据通信历史
    没有备案的网站域名能解析吗
    dedecms列表页有图调用缩略图无图留空的方法
    dede 你所上传的软件类型不在许可列表,请更改系统对扩展名限定的配置
    跟版网 > 织梦教程 > 织梦安装使用 > 织梦DedeCMS附件上传大
    从#65279字符看dede模板页面编码问题
    sublime text如何保存为uft-8无bom编码格式文件
  • 原文地址:https://www.cnblogs.com/gaara-zhang/p/9963838.html
Copyright © 2011-2022 走看看