捕捉鼠标触摸胜利形式的标题栏

时间:2013-03-10 16:19:31

标签: c# winforms wndproc

我有一些捕获鼠标触摸标题栏的技巧,但是当我将鼠标放在标题栏上时常规触发。这是常规

protected override void WndProc(ref Message m)
{
            if (m.Msg == 0xA0) // WM_NCMOUSEMOVE
            {
        listBox1.Items.Add("mouse move on title bar");
            }
            else if (m.Msg == 0x2A2) // WM_NCMOUSELEAVE
            {
        listBox1.Items.Add("mouse leave from title bar");            
            }

            base.WndProc(ref m);
}

任何人都可以告诉我任何技巧 WndProc 只有当鼠标触摸标题栏而不是重复触发时才会触发一次。感谢

1 个答案:

答案 0 :(得分:2)

你在寻找这个吗?我正在使用旗帜控制向列表框中添加项目。

private bool insideTitleBar = false;
private bool outsideTitleBar = false;

protected override void WndProc(ref Message m)
{
    if (m.Msg == 0xA0) // WM_NCMOUSEMOVE
    {        
           if(!insideTitleBar)
           {
            listBox1.Items.Add("mouse move on title bar");
            insideTitleBar = true;
            outsideTitleBar = false;
           }
    } 
    else if (m.Msg == 0x2A2) // WM_NCMOUSELEAVE
    {
           if(!outsideTitleBar)
           {      
            listBox1.Items.Add("mouse leave from title bar");            
            outsideTitleBar = true;
            insideTitleBar = false;
           }
    }
    base.WndProc(ref m);
}