您的位置:首页 > 其它

Winform中在Form上截取消息的两种方法

2007-01-27 00:49 302 查看

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方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: