很简单的一个问题
比如有个button, ID为Button1,点击了这它
按理来说应该由button1_click事件就触发了现在呢,我用这样的方式
使用了wndproc进行重写WndProc(ref Message m)
protected override void WndProc(ref Message m)
{        base.WndProc(ref m);
}
这里面我怎么样得到控件ID,我如何知道这个消息m 是发送给Button1的呢?

解决方案 »

  1.   

    class WinAPI
    {
      [DllImport("coredll.dll")]
      private static extern IntPtr SetCapture(IntPtr hWnd);  [DllImport("coredll.dll")]
      private static extern IntPtr GetCapture();   public static IntPtr GetHWnd(Control ctrl)
      {
        IntPtr hOldWnd = GetCapture();    ctrl.Capture = true;    IntPtr hWnd = GetCapture();    ctrl.Capture = false;    SetCapture(hOldWnd);    return hWnd;
      }}m.HWnd  = WinAPI.GetHWnd(Button1);
    确定如上?
      

  2.   

    hWnd 是个句柄,估计要使用Pinvoke方式
    根据句柄得到控件,
    GetClassName
    或者查下这个函数
    GetWindowText
      

  3.   

    消息循环嘛,你看看这个消息的类型
    这个类型有个枚举值,既然是Button自然有它感兴趣的按键消息
      

  4.   


     protected override void WndProc(ref Message m)
            {            if (m.HWnd == this.Handle && m.WParam == this.button1.Handle )
                {
                   // MessageBox.Show("找到了控件");
                }
                base.WndProc(ref m);
            }
    it's WParam