C# überschreiben der WndProc-Methode in der Steuerungs-Ebene zu erkennen

Habe ich überschriebenen WndProc-Methode im UserControl-Ebene zu erkennen, MouseDown -, MouseUp-und MouseMove-Ereignis für jedes Steuerelement Hinzugefügt, dass UserControl.

protected override void WndProc(ref Message m)
    {
        Point mouseLoc = new Point();

        switch (m.Msg)
        {
            case WM_LBUTTONDOWN:
                System.Diagnostics.Debug.WriteLine("mouse down");
                //this.OnMouseDown(new MouseEventArgs(MouseButtons.Left, 1, mouseLoc.X, mouseLoc.Y, 0));

                break;
            case WM_LBUTTONUP:
                System.Diagnostics.Debug.WriteLine("mouse up");
                //this.OnMouseDown(new MouseEventArgs(MouseButtons.Left, 1, mouseLoc.X,mouseLoc.Y, 0));

                break;
            case WM_MOUSEMOVE:
                int lParam = m.LParam.ToInt32();

                //mouseLoc.X = lParam & 0xFFFF;
                //mouseLoc.Y = (int)(lParam & 0xFFFF0000 >> 16);

                mouseLoc.X = (Int16)m.LParam;
                mouseLoc.Y = (Int16)((int)m.LParam >> 16);

                System.Diagnostics.Debug.WriteLine("mouse move: " + mouseLoc.X + ", " + mouseLoc.Y);

                //this.OnMouseDown(new MouseEventArgs(MouseButtons.Left, 1, mouseLoc.X,mouseLoc.Y, 0));
                break;
        }

        base.WndProc(ref m);
    }

MouseMove -, Down-und Up-arbeiten, wenn sich der Mauszeiger im UserControl aber, wenn sich der Mauszeiger auf andere Steuerelement (in meinem UserControl) funktioniert es nicht.

Mache ich etwas falsch?

Derzeit an der Entwicklung einer Wisch-und scroll-Steuerung.

Ich versuchte, die m sind.Msg im output-Fenster, während der Mauszeiger auf andere Steuerungs-und es zeigt, 528 und 33. Was denken Sie, ist das?

InformationsquelleAutor jaysonragasa | 2010-05-05

Schreibe einen Kommentar