Как перетащить форму мышью не за заголовок на C#?

автор , Мар.09, 2013, рубрики C/C++/C#

Как передвинуть форму с помощью мыши, если необходимо установить свойство FormBorderStyle в System.Windows.Forms.FormBorderStyle.None ?

Способ “В лоб”

private Int32 tmpX;
private Int32 tmpY;
private bool flMove = false;

private void frmMain_MouseDown(object sender, MouseEventArgs e)
{
tmpX = Cursor.Position.X;
tmpY = Cursor.Position.Y;
flMove = true;
}

private void frmMain_MouseMove(object sender, MouseEventArgs e)
{
if (flMove)
{
this.Left = this.Left + (Cursor.Position.X - tmpX);
this.Top = this.Top + (Cursor.Position.Y - tmpY);

tmpX = Cursor.Position.X;
tmpY = Cursor.Position.Y;
}
}

private void frmMain_MouseUp(object sender, MouseEventArgs e)
{
flMove = false;
}

Способ “Хакерский”

const int WM_NCHITTEST = 0x84;
const int HTCAPTION = 2;
const int HTCLIENT = 1;

protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
if (m.Msg == WM_NCHITTEST && (int) m.Result == HTCLIENT)
m.Result = (IntPtr) HTCAPTION;
}

�? еще один способ “�?зящный хакерский”

[DllImport("user32", CharSet = CharSet.Auto)]
internal extern static bool PostMessage(IntPtr hWnd, uint Msg, uint WParam, uint LParam);

[DllImport("user32", CharSet = CharSet.Auto)]
internal extern static bool ReleaseCapture();

const uint WM_SYSCOMMAND = 0x0112;
const uint DOMOVE = 0xF012;
const uint DOSIZE = 0xF008;

private void frmMain_MouseDown(object sender, MouseEventArgs e)
{
ReleaseCapture();
PostMessage(this.Handle, WM_SYSCOMMAND, DOMOVE, 0);
}

P.S.
Список констант:

0xF001 .. 0xF008 = резайз
0xF020 = сворачивает окно или контрол (!!!)
0xF030 = максимизирует окно или контрол
0xF040 = z order — окно на задний план без потери фокуса ввода
0xF060 = закрыть окно
0xF00A = телепортирует мышку на заголовок окна или контрола
0xF00С .. 0xF00F = смешной резайс, ось X мышки перевернута

Советуем портал Softout.Ru как каталог с возможностью бесплатно скачать программы для любых целей.

:, ,


Что-то ищите?

Используйте форму для поиска по сайту:



Все еще не можете что-то найти? Оставьте комментарий или свяжитесь с нами, тогда мы позаботимся об этом!

Ключевые слова нашего блога

  • Ускорение windows xp
  • Активация windows xp
  • Виндовс XP
  • Оптимизация windows xp
  • Активировать windows xp
  • Активация виндовс xp
  • Активация windows xp sp3
  • Скачать windows xp sp3
  • Настройка windows xp
  • Тонкая настройка windows xp

Архив сообщений

Все вхождения, в хронологическом порядке...