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
  • 相关阅读:
    Mysql数据库基本操作
    Entity Framework 实践系列 —— 搞好关系 单相思(单向一对一,onetoone)
    ADO.NET最佳实践
    C++试题1
    SQL操作(初级、中级、高级)
    存储过程入门与提高
    数据库学习笔记
    触发器设计技巧与实例
    UML在关系型数据库设计中的应用
    数据库设计的一些构想
  • 原文地址:https://www.cnblogs.com/dahuzizyd/p/314051.html
Copyright © 2011-2022 走看看