NET 3.0 WPF - Fenster verschieben über MouseDown & MouseMove

CongoFX

Grünschnabel
Hallo Leute,

wie wird ein Fenster (Hauptfenster der Application) über click auf ein Object mit den MouseDown und MouseMove Events verschoben?

Hintergrund ist der, dass der WindowStyle auf none gestellt ist, also keinen Rahmen um mein Hauptfenster ist, und ich meine Titelbar selber gezeichnet habe. Nun möchte ich wenn der Benutzer auf diese Titelbar clickt und die Maustaste gedrückt hält, das Fenster auf dem Desktop verschieben kann.

Unter NET 2.0 lief das wunderbar über Control.Handle, aber das gibt´s nun nicht mehr unter NET 3.0. :mad:

Der NET 2.0 Code sieht wie folgt aus:

Code:
//const and dll functions for moving form
        public const int WM_NCLBUTTONDOWN = 0xA1;
        public const int HT_CAPTION = 0x2;

        [DllImportAttribute("user32.dll")]
        public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

        [DllImportAttribute("user32.dll")]
        public static extern bool ReleaseCapture();

        //call functions to move the form in your form's MouseDown event
        private void MoveWindow(MouseEventArgs e)
        {
            //  Button released
            if (e.Button == MouseButtons.Left)
            {
                ReleaseCapture();
                SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
            }
        }

        private void MainPanelTopLeft_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            MoveWindow(e);
        }

Tja, aber das funktioniert nun nicht mehr.

Hat irgend jemand Ideen? Ich suche mich schon seit Stunden dusselig...

Vielen Dank im Voraus
 
Zurück