C#中的事件也是通过封装系统消息来实现的,如果你在WndProc函数中不处理该消息

那么,它会被交给系统来处理该消息,系统便会通过代理来实现鼠标单击的处理函数,因此你可以通过

WndProc函数来拦截消息

  1. protected override void WndProc(ref Message m)  
  2.        {  
  3.            const int WM_SYSCOMMAND = 0x0112;  
  4.            const int SC_CLOSE = 0xF060;  
  5.   
  6.            if (m.Msg == WM_SYSCOMMAND && (int)m.WParam == SC_CLOSE)  
  7.            {  
  8.                // 屏蔽传入的消息事件   
  9.                this.WindowState = FormWindowState.Minimized;  
  10.                return;  
  11.            }  
  12.            base.WndProc(ref m);  
  13.        }  
  14.   
  15.        protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)  
  16.        {  
  17.            int WM_KEYDOWN = 256;  
  18.            int WM_SYSKEYDOWN = 260;  
  19.   
  20.            if (msg.Msg == WM_KEYDOWN | msg.Msg == WM_SYSKEYDOWN)  
  21.            {  
  22.                switch (keyData)  
  23.                {  
  24.                    case Keys.Escape:  
  25.                        this.Close();  
  26.   
  27.                        break;  
  28.                }  
  29.            }  
  30.            return false;  
  31.        }  
posted on 2015-12-10 13:04  Alan.刘  阅读(2959)  评论(0编辑  收藏  举报