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
  • 相关阅读:
    ubuntu apache2配置
    Oauth2协议解读(一)
    OAuth2协议解读(二)
    flask 环境搭建
    BeautifulSoup初识
    Oauth2解读
    5路由控制
    ​1Web应用
    3Web框架
    2Http协议
  • 原文地址:https://www.cnblogs.com/dahuzizyd/p/314051.html
Copyright © 2011-2022 走看看