Entwickler-Ecke
WinForms - Windows Forms: Wie male ich etwas in den MDI-Clientbereich?
hydemarie - Di 26.06.18 10:33
Titel: Windows Forms: Wie male ich etwas in den MDI-Clientbereich?
Mal was ganz Neues: Ich mache was mit C#. :D
Ich würde gern eine kleine Desktopanwendung mit Windows Forms schreiben (beziehungsweise: bin schon recht weit gekommen), die auf der MDI-Technik basiert. (Hintergrund: Es wird eine Art Texteditor mit frei schwebenden Fenstern. SDI und 'ne Tableiste wären da kontraproduktiv.) Während das Auf- und Zumachen von Clientfenstern kein großes Problem darstellt, wofür ich C# einfach mal loben möchte - mein erster Entwurf in Delphi hat mehr Code für den gleichen Effekt gebraucht, vielleicht bin ich aber auch einfach nur kacke in Delphi -, stellt mich ein technisch eigentlich gar nicht relevantes Thema noch vor ein Rätsel:
Ich wäre gern in der Lage, im Clientbereich des MDI-Fensters mit der Maus ein Rechteck zu malen. Also:
Quelltext
1: 2: 3: 4: 5: 6:
| +----[ Titelleiste ]--------------------[_][X] +--------------------------------------------+ | | | [ Clientbereich ] | | | +--------------------------------------------+ |
Bei Rechtsklick setze ich X, Y und "isDragging". So lange "isDragging" == true, soll bei jeder Mausbewegung ein Rechteck gemalt werden. Ich möchte also sozusagen das mit der Maus "aufgezogene" Rechteck visualisieren.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| { if (isDragging) { iTargetX = e.X; iTargetY = e.Y;
} } |
Vermutlich muss ich irgendwas mit einem CPen machen, aber wie kriege ich das so hin, dass das nicht stehen bleibt, sondern mit jedem MouseMove neu gezeichnet wird?
hydemarie - Di 26.06.18 12:29
Hmm, ich hab' ja kein Panel. Aber der Link hilft mir schon weiter, danke...
hydemarie - Di 26.06.18 14:51
Es geht tatsächlich um den Clientbereich des Hauptfensters. Ich möchte sozusagen neue Clientfenster in das Hauptfenster "malen" können, statt sie bloß "zu erstellen", etwa so wie im Anhang. Sinn: Sobald ich die Maus loslasse, soll da, wo der "Vorschaurahmen" ist, das neue ClientWindow erscheinen ... :)
Ich komme erst übermorgen dazu, wieder etwas am Code zu machen, aber ich bin auf jeden Fall sehr dankbar für deine Tipps.
Delete - Do 28.06.18 10:08
- Nachträglich durch die Entwickler-Ecke gelöscht -
hydemarie - Do 28.06.18 11:43
Weder noch! :) Ich möchte tatsächlich nur einen Rahmen darstellen, um den Bereich zwischen "hier wurde die Maus gedrückt" und "hier ist die Maus gerade" rechteckig darzustellen. Beim Loslassen soll der Rahmen verschwinden und durch ein MDI-Fenster ersetzt werden.
Ralf Jansen - Do 28.06.18 14:43
Beispielprojekt im Anhang
hydemarie - Do 28.06.18 16:57
:shock:
Genau das wollte ich programmieren! Danke, Ralf!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!