程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#實現在Form上截取消息的兩種方法

C#實現在Form上截取消息的兩種方法

編輯:關於C語言

比較常用的是重載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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved