zoukankan      html  css  js  c++  java
  • [转]Winform中在Form上截取消息的两种方法

    比较常用的是重载Form的DefWndProc方法,例如截取鼠标按下的消息:
    protected override void DefWndProc(ref Message m)
    {
               
    if ( m.Msg == 0x0201 )
               
    {
                    MessageBox.Show(m.Msg.ToString());
                }

               
    else
               
    {
                   
    base.DefWndProc (ref m);
                }

    }

    还可以通过另一种办法,使用IMessageFilter 接口:
    public class MessageFilter : IMessageFilter
    {
                   
    public bool PreFilterMessage(ref Message m)
                    {
                           
    if (m.Msg == 0x0201)
                          {
                                    MessageBox.Show(
    "WM_LBUTTONDOWN is: " + m.Msg);
                                 
    return true;
                          }
                         
    return false;
                    }

    }

    然后使用Application.AddMessageFilter方法,例如:
    private static MessageFilter msgFliter = new MessageFilter();
    在Main方法中注册消息筛选器:
    Application.AddMessageFilter(msgFliter);
    如果要取消注册,可以调用Application.RemoveMessageFilter方法

    在这里有一个Windows的MessageID的枚举,挺有用的,好几次都忘了地址,这次写在这里好好保存
    Windows Message ID constants
  • 相关阅读:
    考试 题目
    引用数据类型 Scanner和 Random
    数组
    数据字典 事物 序列 索引视图
    小程序下拉刷新
    使用e.target.dataset的问题
    动态统计当前输入内容的字节、字符数
    小程序根据input输入,动态设置按钮的样式
    小程序刨坑(一)
    charles 踩坑记录
  • 原文地址:https://www.cnblogs.com/freeliver54/p/1232922.html
Copyright © 2011-2022 走看看