Designer für benutzerdefinierte Formular, verschieben/Größe mit winAPI -Steuerelementen verschieben/Größe

StackOverflow https://stackoverflow.com/questions/763239

  •  11-09-2019
  •  | 
  •  

Frage

Ich muss einige Probleme und den Designer des Zäderformulars beheben, der vor langer Zeit für ein Datenbankprojekt geschrieben wurde. In Design Panel Class Code habe ich diese Zeilen begegnet

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  
        }
    }
}

Die FMouseposition gibt an, ob die Maus über einen beliebigen Rand der ausgewählten Kontrolle war.

Was mich verwirrt, sind diese Windows-Nachrichten: Es scheint, dass es keine Dokumentation zu WM_SYSCOMMAND mit den Parametern 0xf001-0xf009 gibt (vielleicht startet es eine Art "Drag/Gratize-Sequenz"). Irgendwelche Ideen?

Wenn mein Vorschlag richtig ist, wie kann ich diese Sequenzen dann stornieren?

War es hilfreich?

Lösung

Sie sind undokumentiert Parameter. Nach der Suche gelang es mir, diese Liste zu finden.

  • 0xf000 (CENTER Cursor auf der Form)
  • 0xf001 (Größenänderung von links)
  • 0xf002 (Größenänderung von rechts)
  • 0xf003 (Größenänderung von up)
  • 0xf004 (Verriegeln Sie die untere rechte Ecke des Formulars, die sich in der linken Ecke zur Größe der Größe bewegt)
  • 0xf005 (Gleiches von der linken Ecke)
  • 0xf006 (RECHTS- UND LINKEN RONTER, ERHALTENSCHRIFT ANDEREN)
  • 0xf007 (Verriegelung und rechte Grenze, ändern Sie die Größe einer anderen Grenze)
  • 0xf008 (Schließe links und nach oben und die Grenze und die Größe anderer Größe)
  • 0xf009 (Ziehen Sie von irgendwohin)
  • 0xf010 (Cursor zentriert in der oberen Ordnung)
  • 0xf020 (Automatische Form)
  • 0xf030 (Auto-maximisieren Form)

Bezug: http://www.delphi3000.com/articles/article_1054.asp#comments

Andere Tipps

Basierend auf meinem Win32 -Programmierung (Rektor und Newcomer) P902-903 erklärt WM_SYSCOMMAND wird gesendet, wenn der Benutzer ein Element aus dem Systemmenü auswählt (anstatt den Normalen zu senden WM_COMMAND).

Das MSDN HILFE sagt sc_size = 0xf000 und es und und und es Win32 -Programmierung auch sagen Window aber nicht weiter klären, um ihre Verwendung zu klären. Danke Stukelly, dass du sie geklärt hast.

Sehen Napiviewer und schauen Sie sich Konstanten an, die mit sc_ beginnend sind

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top