Lieber Andy,
Danke für deinen Hinweis, ich hab's jetzt ersteinmal dabei belassen, das
MenuFenster als document-window auszulegen und nicht als Floating-Window.
Das ist für mich auch völlig ausreichend.
Allerdings, da scheint ja der Hase im Pfeffer zu liegen: Wenn von Fenster2
aus Fenster3 geöffnet wird, dann verliert Fenster2 den Fokus und gibt ihn ab
an Fenster3. Wenn Fenster3 aber ein Floating-Window ist und nicht ein
Document-Window, dann scheint der Fokus ins Leere zu zeigen und muss von
einem der anderen Fenster aufgenommen werden (welches dann natürlich in den
Vordergrund gebracht und neu gezeichnet wird). Fenster3 allerdings ist
ebenfalls aktiv, weil es ein Floating Window ist. Und diese Zusammenhänge
durchschaue ich eben nicht ganz. Die Frage müsste also lauten: Können ein
Document-Window und ein Floating-Window gleichzeitig ativated sein? Hier
könnte ein bug versteckt sein.

> noch nicht gesehen. Andererseits kannst Du das ja auch einfach umschiffen,
> indem Du in Deinem Resized-Event prüfst, ob sich die Fenstergröße
> tatsächlich geändert hat:
>
> if (gOldWidth <> w.width OR gOldHeight <> w.height)
>        AdjustWindowContents...
> end if

Ich hatte so etwas auch schon ausprobiert, allerdings würde ich noch härter
'ran gehen.
Ich setze eine globale Variable 'stAktivesFenster' as String,
in den activate-Eventhandler jedes Fensters schreibe ich:
stAktivesFenster = "meinFensterName",
im resized-Eventhandler jedes Fensters klammere ich den Code mit:
if stAktivesFenster = "meinFensterName" then
...
end if

Die Idee dabei war, bestimmte gleichartige Aktionen in den einzelnen
Fenstern mit einem globalen Code steuern zu können. Wenn jedes Fenster ein
Control_A hat, dann wäre es praktisch in einem Modul schreiben zu können:
stAktivesFenster.Control_A.visible =true
Ganz so einfach geht das natürlich nicht. Man müsste schon schreiben:
if stAktivesFenster ="Fenster1" then
   Fenster1.control_A.visible =true
elseif stAktivesFenster ="Fenster2" then
   ...

Es ist vielleicht naiv von mir, aber ist es möglich, die Variable
stAktivesFenster nicht als String, sondern als Reverenz auf auf das Fenster
zu deklarieren, der globalen Routine diese Reverenz als Parameter zu
übergeben und so mit nur einer Code-Zeile auszukommen?:
ReverenzDesFensters.Control_A.visible =true

bestens, Christian Hahn.

Antwort per Email an