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
  • 相关阅读:
    我决定潜心研究技术了...
    new proxy
    谷歌插件开发
    js计算不准确 解决方案
    netty中如何切包
    Spring Boot的ComponentScan原理
    解决org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next token found character '@'
    深入理解js立即执行函数
    winform 将子窗体显示在父窗体的TabControl控件上
    js隐藏网页元素
  • 原文地址:https://www.cnblogs.com/dahuzizyd/p/314051.html
Copyright © 2011-2022 走看看