Dialoge gekoppelt bewegen
-
hallo,
ich habe mir mehrere Dialoge gebastelt (non-modal) und möchte nun, dass wenn ich den Hauptdialog per Drag&Drop bewege, sich die anderen Dialoge (diese befinden sich über dem hauptdialog) entsprechend mitbewegen. Geht das überhaupt? wenn nicht wie muss ich an die sache heran gehen?
danke schonmal
mfg, TFTS
-
du kannst mit SetWindowPos() die position und größe deines fensters (auch aller steurelemente) verändern.
wenn du dein dialogfeld bewegst musste dir die gewünschte position berechnen und dein anderes fenster an diese koordinaten bewegen.
das machst du entweder direkt über nen handle deines anderen dialogfeldes, oder wenn du das dialogfeld 'nicht kennst' mit FindWindow()musste sicherlich in der MSDN nen bischen suchen, aber da steht alles drin
-
wie ist das bei Registerkarten gelöst? da hat man ja auch mehrere dialoge in einem "hauptfenster". funktioniert das bei registerkarten genauso wie du es beschrieben hast, oder ist das dort irgendwie schon mit implementiert
mfg, TFTS
-
mit registrierkarten hab ich noch nichts gemacht, weil mir das zu kompliziert war ;).
das ist aber bestimmt noch wieder was anderes mit den registerkarten
-
Bei Registrierkarten sind die "Unterfenster" Kinder des Registrierkartenfensters und werden deswegen automatisch mitbewegt. Intern dürfte es aber wohl auf das selbe rauslaufen.
-
kann ich das mit meinen fenstern nicht auch machen? sie irgendwie als "kinder" definieren?
mfg, TFTS
-
Versuchs.
-
Wie oben gesagt ist die einzige Möglichkeit deine neue Position beim bewegen auszulesen und dementsprechend die anderen Fenster mitzubewegen.
-
mit welche funktion wird permanent überprüft ob ich gerade das fenster bewege oder nicht? es müsste ja die "kinder" fenster genau in dem selben augenblick losbewegen, indem ich das mainfenster verschiebe...
danke für eure antworten
mfg, TFTS
-
fang in deinem dialogfeld, welches der benutzer bewegt, die message WM_MOVE ab. das ereigniss behandelst du in der funktion OnMove()
EDIT:
Vergessen zu schreiben: es wird nicht permanent überprüft ob dein fenster bewegt wird, sondern:
wenn du das fenster bewegen willst bekommt windows eine message (WM_MOVE) und die wird an dein prog gesendetnur zu info
-
danke, das ist doch schon mal ein ansatz mit dem ich was anfangen kann ... morgen
mfg, TFTS