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/
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/
> 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