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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist, wie windows funktioniert - jedes Steuerelement in winforms ist ein Fenster-und Maus-Nachrichten, gehen Sie zu dem Fenster, Sie sind vorbei. Wenn Sie brauchen, um die Maus input von anderen windows-Sie brauchen, um zu kooperieren, Sie irgendwie.
Nachdem alles gesagt, dass, wenn alles, was Sie wollen, ist ein flick-und Rollbalken, sollten Sie prüfen, Blick auf die WM_GESTURE APIs - das ist das, was Sie sind, und Sie werden Ihnen erlauben zu implementieren, streichen und scrollen, ohne die Zusammenarbeit aus, die Ihr Kind windows.
Natürlich, es ist einfach wirklich hart.
InformationsquelleAutor Stewart
Sie machen nichts "falsch", aber Windows ist einfach das senden der Nachricht an die richtige Steuerung. Es nicht senden Sie die Nachricht an die übergeordnete Steuerung sowie.
Für wichtige Ereignisse ist es die Form.KeyPreview-Eigenschaft, die erlaubt, die form zu erhalten, die Ereignisse als gut, aber ich bin mir nicht bewusst, etwas ähnliches für die Maus-Ereignisse.
InformationsquelleAutor EMP