Hi Rutger, this should work: OTFrame2::CloseWindow() { // fParent is pointer to parent OTFrame1 // Maybe parent was closed before child if (fParent) fParent->CloseChildWindow(this); else delete this; } OTFrame1::CloseChildWindow(TGFrame *frame) { delete frame; // find frame pointer in list of OTFrame2's and set to 0 } Don't call TGMainFrame's CloseWindow because in that case your window will be destroyed two times (by TGMainFrame::CloseWindow and by the delete of the OTFrame2). Cheers, Fons. Rutger van der Eijk wrote: > > Hi all, > > I have the following code and problem concerning the use of the GUI: > > I have a derived class from TGMainFrame (let's say class OTFrame1), which > has all kinds of widgets. Pressing one of the buttons creates another > TGMainFrame derived class (OTFrame2), which from then on should work > 'stand alone' (i.e. in parallel) with the OTFrame1 frame, until it is > deleted. > > The problem: > > I want the window maneger to be able to close OTFrame2 so I need > to implement the member function CloseWindow(). Here I first call the > CloseWindow member of the TGMainFrame base-class. But as far as I know > this does not delete the OTFrame2 object. So how should I do that, and hwo > do I inform the OTFrame1 object that the OTFrame2 object is deleted? > > I tried to do this by calling a member function of the OTFrame1 object > which deletes it's pointer to the OTFrame2. But becuase this call is done > from within the OTFrame2 CloseWindow member this (as to be expected) does > not work proberly. (the object is deleted while the program is still > executing it) > > Is there a way to solve this problem? -- Org: CERN, European Laboratory for Particle Physics. Mail: 1211 Geneve 23, Switzerland Phone: +41 22 7679248 E-Mail: Fons.Rademakers@cern.ch Fax: +41 22 7677910
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:34:33 MET