C#学习日记2016-12-22 Windows消息响应机制和C#中的窗口处理方法

论坛 期权论坛 脚本     
匿名技术用户   2020-12-21 15:47   31   0

Windows的消息处理系统

windows消息处理机制一般分为三个部分:

1.消息队列:Windows的消息一般是由Windows统一在一个消息队列中进行管理

2.消息循环:应用程序从消息队列中获取自己的消息,并将其分配给窗体方法进行处理

3.窗口过程:负责处理接收到的消息,每个窗口都有对应的窗口过程,负责截获消息并 进行响应,WinProc是窗口处 理方法,负责处理接收到的消息。一般我们处理程序时,不会注意到这个函数,系统会自动替我们生 成,WinProc方法通过switch··case语句判断消息并进行处理, 如果有case中没有出现的情况,系统会调 用DefWinProc方法进行处理,所以在用户的自定义消息中,可以通过重载DefWinProc方法的 switch···case语句进行处理

 protected override void WndProc(ref Message m)    //对WndProc进行重写,实现用户的需求
        {
            switch (m.Msg)
            { 
                case 0x4e:
                case 0xd:
                case 0xe:
                case 0x14:
                    base.WndProc(ref m);         //调用基类的WndProc方法
                    break;
                case 0x84:
                    this.DefWndProc(ref m);      //鼠标点击任意位置后都可以进行拖动窗体,重写这个方法。
                    if(m.Result.ToInt32()==0x01)
                    {
                        m.Result = new IntPtr(0x02);
                    }
                    break;
                case 0xA3:                         //禁止双击最大化
                    break;
                default:
                    base.WndProc(ref m);
                    break;
            }
        }


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP