Re: [ROOT] problem with TGTransientFrame under windows

From: suaide@if.usp.br
Date: Tue Jun 15 2004 - 17:43:25 MEST


Ok, so how do I instantiate the object? I say, I start root
and, at the root prompt I want to create a message box
like the one mentioned bellow. How do I do that?
And, why does this work under Linux but not under windows?

Regards

Alex Suaide

----------------------------------------
Dr. Alexandre Suaide
http://www.dfn.if.usp.br/~suaide/
55-11-3091-7072
Departamento de Física Nuclear
Universidade de São Paulo, Brasil
----- Original Message -----
From: "Ilka Antcheva" <Ilka.Antcheva@cern.ch>
To: <suaide@if.usp.br>
Cc: <roottalk@pcroot.cern.ch>
Sent: Tuesday, June 15, 2004 12:29 PM
Subject: Re: [ROOT] problem with TGTransientFrame under windows


> 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