πŸš€ go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: de.comp.lang.c++
3 messages
3 total messages Started by Wolfgang Deiss Wed, 25 Oct 1995 07:17
BC4.5: Definition des Main Windows
#655
Author: Wolfgang Deiss
Date: Wed, 25 Oct 1995 07:17
17 lines
930 bytes
Bei der Ableitung von TApplication wird das Main Window
normalerweise wie folgt definiert:

   SetMainWindow(new TFrameWindow, "Header", new TGenericWindow);

So funktioniert es auch:

   TFrameWindow *frame;
   frame = new TFrameWindow;
   SetMainWindow(frame, "Header", new TGenericWindow);

So aber nicht:

   TFrameWindow frame;
   SetMainWindow(&frame, "Header", new TGenericWindow);

Wieso nicht?
Re: BC4.5: Definition des Main Windows
#656
Author: Wolfgang Deiss
Date: Wed, 25 Oct 1995 07:31
17 lines
985 bytes
Sorry, der Aufruf von SetMainWindow war nicht ganz korrekt. Es muss natuerlich
heissen:

   SetMainWindow(new TFrameWindow(0, "Header", new TGenericWindow));

So geht's auch:

   TFrameWindow *frame;
   frame = new TFrameWindow(0, "Header", new TGenericWindow);
   SetMainWindow(frame);

So aber nicht:

   TFrameWindow frame(0, "Header", new TGenericWindow);
   SetMainWindow(&frame);

Wieso nicht?
Re: BC4.5: Definition des Main Windows
#676
Author: Wolfgang Deiss
Date: Sat, 28 Oct 1995 08:25
18 lines
1457 bytes
Gestern habe ich den Grund herausgefunden:

Wenn man das TFrameWindow wie in der dritten Alternative definiert, bleibt
die Variable frame nur lokal in TApplication::InitMainWindow() gΓΌltig. Die
Definition und Initialisierung ist dann schon ok, leider wird frame dann
aber beim Verlassen von InitMainWindow() wieder destruiert. Dass Windows 
nichts mehr mit einem 'verblichenen' Fenster anfangen kann, ist natuerlich
klar.

Definiert man frame global, so gibt es wieder Probleme, weil der Konstruktor
von TFrameWindow dann direkt bei Programmstart, also vor jeglicher Windows-
Initialisierung aufgerufen wird. Dies fuehrt zu einer Schutzverletzung :-(

Also: Erzeugte Fenster duerfen erst in InitMainWindow definiert werden und
muessen ab dann bis zur Beendigung des Programmlaufs verfuegbar sein. Es
geht also kein Weg umhin, das Fenster mit new zu erzeugen.

Wolfgang
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads