.NET 消息处理函数【WndProc】

如果需要对Winform中某个控件消息进行特殊处理时,可以重写控件自带【WndProc】函数;

  •   WndProc 函数作用:

主要用在拦截并处理系统消息和自定义消息

例:windows程序会产生很多消息,比如你单击鼠标,移动窗口都会产生消息。这个函数就是默认的消息处理函数。你可以重载这个函数来定制自己的消息处理流程。

  •   使用示例1:

在Winform程序中,可以重写WndProc函数,来捕捉所有发生的窗口消息。

这样,我们就可以"篡改"传入的消息,而人为的让窗口改变行为。

protected override void WndProc(ref System.Windows.Forms.Message m)
{

    //监控:拦截窗体最小化按钮消息 
    if (m.Msg == 0x0112) {
        if (m.WParam.ToInt32() == 0xF020) {
            //制定自己处理
            this.Visible = true; 
            return;
        }
    }

    //执行默认消息
    base.WndProc(ref m);
}
  •   使用示例2: 
protected override void WndProc(ref System.Windows.Forms.Message m)
{
	//m.Msg == 675 mouseleave;
	//m.Msg == 512 mousemove;
	//m.Msg == 256 keydown;
	//m.Msg == 257 keyup;
	//m.Msg == 514 leftbuttonup;
	//m.Msg == 513 leftbuttondown;
	//m.Msg == 515 WM_LBUTTONDBLCLK
	if (m.Msg ==515||m.Msg==256||m.Msg ==513) {
		frmShow f = new frmShow();
		f.Location=this.Location;
		f.Show();
		return;
	}
	base.WndProc (ref m);

	if (m.Msg==0xf || m.Msg==0x133) {
		this.DrawBorder();
	}
}

/**
 *定制Border方法
 *
 **/
private void DrawBorder()
{
	System.Windows.Forms.ControlPaint.DrawBorder(this.CreateGraphics(),new System.Drawing.Rectangle(1,1,this.Width-2,this.Height-2),this.m_BorderColorIn,this.m_BorderColorStyle);
	System.Windows.Forms.ControlPaint.DrawBorder(this.CreateGraphics(),new System.Drawing.Rectangle(0,0,this.Width,this.Height),this.m_BorderColorOut,this.m_BorderColorStyle);
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值