I’m primarily a Linux user, but recently I built ROOT on Windows 7 using Visual C++ according to the following resources.
gentit.home.cern.ch/gentit/roota … Debug.html
muenster.de/~naumana/rootmsv … uildscript
Then I attempted to use François-Xavier Gentit’s Skeleton (gentitfx.web.cern.ch/gentitfx/Skeleton/) to generate a new ROOT VC++ project. Skeleton compiles and executes without error, but I need to add a vertical scrollbar to its TGMainFrame. I know this should be simple and that my trouble probably reflects a poor understanding of the ROOT GUI library, but when I add a scrollbar by mimicking how TGCanvas uses scrollbars, the new scrollbar appears but is completely non-functioning. What is the correct way to add a vertical scrollbar in the context of this code? (The code is available at the above link for Skeleton.)
Many Thanks,
Evan
Hi Evan,
You cannot just add scrollbars to a main frame (well, you can, but then it is much more complex to handle). Just use TGCanvas instead. To try, just replace this line (in TGSkeleton.cxx):
By these few lines:
fCan = new TGCanvas(this, width, 200, kFixedWidth);
AddFrame(fCan, new TGLayoutHints(kLHintsExpandY | kLHintsExpandX));
fFrameText = new TGVerticalFrame(fCan->GetViewPort(), width, 200, kChildFrame | kRaisedFrame);
fCan->SetContainer(fFrameText);
And don’t forget to add the declaration of the TGCanvas as member of the TGSkeleton class, e.g.:
class TGSkeleton : public TGMainFrame {
protected:
[...]
TGCanvas *fCan; //provides scroll bars
TGVerticalFrame *fFrameText; //Frame containing TGTextEntry
[...]
You can also change the fFTLayout as shown here:
(to avoid increasing size of the text entries)
Cheers, Bertrand.
Thanks Bertrand – That was exactly what I needed.