Мне нужно исправить некоторые проблемы и улучшить дизайнер форм, написанный давно для проекта базы данных.
В коде класса Design Panel я встретил эти строки
private void DesignPanel_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
(sender as Control).Capture = false;
switch (FMousePosition)
{
case MousePosition.mpNone:
SendMessage((sender as Control).Handle, WM_SYSCOMMAND, 0xF009, 0);
break;// Move
case MousePosition.mpRightBottom:
SendMessage((sender as Control).Handle, WM_SYSCOMMAND, 0xF008, 0);
break;//RB
case MousePosition.mpLeftBottom:
SendMessage((sender as Control).Handle, WM_SYSCOMMAND, 0xF007, 0);
// ... here are similar cases ...
case MousePosition.mpLeft:
SendMessage((sender as Control).Handle, WM_SYSCOMMAND, 0xF001, 0);
break;//L
}
}
}
FMousePosition указывает, была ли мышь над любым краем выбранного элемента управления.
Что меня смущает, так это сообщения Windows: кажется, нет документации по WM_SYSCOMMAND с параметрами 0xF001-0xF009 (возможно, она запускает какую-то последовательность «перетаскивания / изменения размера»). Есть идеи?
Если мое предложение верно, то как я могу отменить эти последовательности?