0

以下のソース コードのように、すべての背景を HTCAPTION として設定するフォームがあります。

    protected override void WndProc(ref Message m)
    {
        base.WndProc(ref m);

        switch(m.Msg)
        {
            case Global.WM_NCHITTEST:
                Point mouseCursor = PointToClient(Cursor.Position);

                if (mouseCursor.X < borderSize && mouseCursor.Y < borderSize)
                    m.Result = (IntPtr)Global.HTTOPLEFT;
                else if (mouseCursor.X < borderSize && mouseCursor.Y > Height - borderSize)
                    m.Result = (IntPtr)Global.HTBOTTOMLEFT;
                else if (mouseCursor.X < borderSize)
                    m.Result = (IntPtr)Global.HTLEFT;
                else if (mouseCursor.X > Width - borderSize && mouseCursor.Y < borderSize)
                    m.Result = (IntPtr)Global.HTTOPRIGHT;
                else if (mouseCursor.X > Width - borderSize && mouseCursor.Y > Height - borderSize)
                    m.Result = (IntPtr)Global.HTBOTTOMRIGHT;
                else if (mouseCursor.X > Width - borderSize)
                    m.Result = (IntPtr)Global.HTRIGHT;
                else if (mouseCursor.Y < borderSize)
                    m.Result = (IntPtr)Global.HTTOP;
                else if (mouseCursor.Y > Height - borderSize)
                    m.Result = (IntPtr)Global.HTBOTTOM;
                else
                    m.Result = (IntPtr)Global.HTCAPTION;
                break;
        }
    }

問題は、HTCAPTION が設定されている場合、From.MouseMove イベントをトリガーできないことです。

    private void FormMain_MouseMove(Object sender, MouseEventArgs e)
    {
        Point p = e.Location;

        Console.WriteLine(p);
    }

MouseMove イベントをキャッチするにはどうすればよいですか?

4

1 に答える 1

0

VB.netでは

MyBase.WndProc(m)

したがって、間違っている場合は修正してください。ただし、C# では推測できます。

this.WndProc(m)

? それを if ステートメントの前に置きます。

于 2013-03-20T16:46:21.877 に答える