Feedback

Fenster ohne Titelleiste bewegen

Sprache: C#

Wenn bei einer Form die Titelleiste ausgeblendet wird, kann die Form nicht mehr bewegt werden. Einfach die Ereignisse Mouse_Move und Mouse_Down mit diesem Code füllen. 🙂
private Point m_offset;
private Point m_Pos;

private void EM_MouseMove(object sender, MouseEventArgs e)
{
     if (e.Button == MouseButtons.Left)
     {
          m_Pos = Control.MousePosition;
          m_Pos.Offset(mouse_offset.X, mouse_offset.Y);
          Location = m_Pos;
     }
}

private void EM_MouseDown(object sender, MouseEventArgs e)
{
      m_offset = new Point(-e.X, -e.Y);
}
private Point m_offset;
private Point m_Pos;

private void EM_MouseMove(object sender, MouseEventArgs e)
{
     if (e.Button == MouseButtons.Left)
     {
          m_Pos = Control.MousePosition;
          m_Pos.Offset(mouse_offset.X, mouse_offset.Y);
          Location = m_Pos;
     }
}

private void EM_MouseDown(object sender, MouseEventArgs e)
{
      m_offset = new Point(-e.X, -e.Y);
}

2 Kommentare

  1. Eine einfachere Möglichkeit bietet Windows bereits an:
    [code]
    protected override void WndProc(ref Message m) {
    const int WM_NCHITTEST = 0x84;
    const int HTCAPTION = 0x02;

    if (m.Msg == WM_NCHITTEST) {
    m.Result = (IntPtr)HTCAPTION;
    } else {
    base.WndProc(ref m);
    }
    }
    [/code]

  2. Besteht die Möglichkeit, das auf ein Objekt anzuwenden? (z.B. Media Player Plugin) Mein Fenster hat keinen Rahmen und keinen Hintergrund, der Media Player ist die einzige Möglichkeit wo man ziehen könne…