捕获某个按钮单击的WndProc消息

Soh*_*pta 2 wndproc windows-messages .net-2.0 winforms

我的表单上有一个取消按钮.我想在WndProc方法内部确定Cancel单击此按钮并为其编写一些代码.这是绝对必要的,否则我无法取消尚未执行的所有其他控制验证事件.

请帮忙.

.NET - 2.0,WinForms

Ern*_*rno 5

这是你可以解析WndProc消息左键单击子控件的方法:

protected override void WndProc(ref Message m)
{
    // http://msdn.microsoft.com/en-us/library/windows/desktop/hh454920(v=vs.85).aspx
    // 0x210 is WM_PARENTNOTIFY
    // 513 is WM_LBUTTONCLICK
    if (m.Msg == 0x210 && m.WParam.ToInt32() == 513) 
    {
        var x = (int)(m.LParam.ToInt32() & 0xFFFF);
        var y = (int)(m.LParam.ToInt32() >> 16);

        var childControl = this.GetChildAtPoint(new Point(x, y));
        if (childControl == cancelButton)
        {
            // ...
        }
    }
    base.WndProc(ref m);
}
Run Code Online (Sandbox Code Playgroud)

BTW:这是32位代码.