Re: [ROOT] problem with TGTransientFrame under windows

From: Ilka Antcheva (Ilka.Antcheva@cern.ch)
Date: Tue Jun 15 2004 - 17:29:35 MEST


Hi Alex,

You cannot use gClient->GetRoot() this way - as a parent window parameter
and as a main frame parameter.

Cheers, Ilka

suaide@if.usp.br wrote:

> Hello all
>
> BTW, I tested the TGTransientFrame behavior with other
> root classes as following:
>
> new
> TGMsgBox(gClient->GetRoot(),gClient->GetRoot(),"teste","teste",kMBIconExclam 
>
> ation,kMBOk);
>
> and the root also freezes. The frame opens ok but the buttons
> and messages do not show and root freezes. So, I think It is not
> a problem in my code but somewhere else. I also tested with TGFileDialog
> and got the same behavior. I already tried another windows XP machine and
> also reinstalled the ROOT system
>
> Is there any problem with transient frames with the new version of root?
>
> Regards
>
> Alex Suaide
>
> ----------------------------------------
> Dr. Alexandre Suaide
> http://www.dfn.if.usp.br/~suaide/ <http://www.dfn.if.usp.br/%7Esuaide/>
> 55-11-3091-7072
> Departamento de Física Nuclear
> Universidade de São Paulo, Brasil
> ----- Original Message -----
> From: <suaide@if.usp.br>
> To: <roottalk@pcroot.cern.ch>
> Sent: Tuesday, June 15, 2004 10:27 AM
> Subject: [ROOT] problem with TGTransientFrame under windows
>
>
> > Hello all
> >
> > I am using root 4.00/06 compiled with VC++7 under windows
> > XP and I am trying to implement a simple dialog box class that
> > inherits from TGTransientFrame. It works great under linux.
> > Under windows it compiles fine (no warnings in the code)
> > with VC++ 6 but when I create an object from that class the
> > root section freezes and I have to kill the process. The frame
> > opens but the buttons, labels and text entries do not show
> > and everything freezes.
> >
> > Any help????
> >
> > The code is bellow
> >
> > Regars
> >
> > Alex Suaide
> >
> > TDialog.h -------------------------------------------------------
> >
> > #ifndef TDialog_HH
> > #define TDialog_HH
> > #include "TGClient.h"
> > #include "TApplication.h"
> > #include "TGLabel.h"
> > #include "TGMsgBox.h"
> > #include "TString.h"
> > #include "TGTextBuffer.h"
> > #include "TGTextEntry.h"
> > #include "TGButton.h"
> >
> > class TDialog : public TGTransientFrame
> > {
> >   private:
> >     TString          *mLabel;
> >     TString          *mValue;
> >     TGLabel          *mDgLbl[100];
> >     TGTextEntry      *mTE[100];
> >     TGButton         *mOKb;
> >     TGButton         *mCancelb;
> >     int              mN;
> >     int*             mStat;
> >   public:
> >                      TDialog(char*,int, TString*,TString*,int*,int=600,
> > int=400);
> >     virtual          ~TDialog();
> >     bool             ProcessMessage(Long_t msg, Long_t parm1, Long_t
> parm2);
> >
> >   ClassDef(TDialog,1)
> > };
> > #endif
> >
> > TDialog.cxx -------------------------------------------------------
> >
> > #include "TDialog.h"
> >
> > ClassImp(TDialog)
> > TDialog::TDialog(char* title,int N, TString *label, TString* value, 
> int*
> > stat, int w, int h)
> > :TGTransientFrame(gClient->GetRoot(),gClient->GetRoot(),w,h)
> > {
> >   int i;
> >   mN = N;
> >   mLabel = label;
> >   mValue = value;
> >   mStat = stat;
> >   for(i=0;i<mN;i++)
> >   {
> >     mDgLbl[i] = new TGLabel(this, (char*)mLabel[i].Data()) ;
> >     mTE[i] = new TGTextEntry(this, (char*)mValue[i].Data());
> >     AddFrame(mDgLbl[i],new TGLayoutHints(kLHintsExpandX));
> >     AddFrame(mTE[i],new TGLayoutHints(kLHintsExpandX));
> >   }
> >   mOKb = new TGTextButton(this, "Ok", 21);
> >   mCancelb = new TGTextButton(this, "Cancel", 22);
> >   AddFrame(mOKb,     new TGLayoutHints(kLHintsExpandX));
> >   AddFrame(mCancelb, new TGLayoutHints(kLHintsExpandX));
> >   SetWindowName(title);
> >   MapSubwindows();
> >   Resize(GetDefaultSize());
> >   MapWindow();
> >   gClient->WaitFor(this);
> > }
> > TDialog::~TDialog()
> > {
> >   int i;
> >   for(i = 0;i<mN;i++)
> >   {
> >     delete mDgLbl[i];
> >     delete mTE[i];
> >   }
> >   delete mOKb;
> >   delete mCancelb;
> > }
> > bool TDialog::ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2)
> > {
> >   int i;
> >   switch (GET_MSG(msg))
> >   {
> >     case kC_COMMAND:
> >       switch (GET_SUBMSG(msg))
> >       {
> >         case kCM_BUTTON:
> >           switch (parm1)
> >           {
> >             case 21:
> >               for(i=0;i<mN;i++)
> >                 if(mTE[i]->GetBuffer()) mValue[i] = mTE[i]->GetText();
> >                 else mValue[i] = "";
> >             *mStat = 1;
> >               delete this;
> >               break;
> >             case 22:
> >             *mStat = 0;
> >               delete this;
> >               break;
> >           }
> >      }
> >   }
> >   return true;
> > }
> >
> >
> >
> >
> > ----------------------------------------
> > Dr. Alexandre Suaide
> > http://www.dfn.if.usp.br/~suaide/ <http://www.dfn.if.usp.br/%7Esuaide/>
> > 55-11-3091-7072
> > Departamento de Física Nuclear
> > Universidade de São Paulo, Brasil
> >
> >
>



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:08 MET