Je dois résoudre certains problèmes et enchanter le concepteur de formulaires écrit depuis longtemps pour un projet de base de données. In Design code de classe Panel I rencontré ces lignesConcepteur de formulaires personnalisés, commandes de déplacement/redimensionnement à l'aide de WinAPI
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 indique si la souris était sur une arête de contrôle sélectionné. Ce qui m'embrouille, ce sont ces messages de Windows: il semble qu'il n'y ait pas de documentation sur WM_SYSCOMMAND avec les paramètres 0xF001-0xF009 (peut-être qu'il commence une sorte de «séquence de drag/redimensionnement»). Des idées?
Si ma suggestion est bonne, alors comment puis-je annuler ces séquences?