Hi Will,
Could you try the code below and let me know?
[code]#include <TGClient.h>
#include <TRootEmbeddedCanvas.h>
#include <RQ_OBJECT.h>
#include <TGDoubleSlider.h>
#include <TGFrame.h>
class MyMainFrame {
RQ_OBJECT(“MyMainFrame”)
private:
TGMainFrame fMain;
TRootEmbeddedCanvas fEcanvas;
TGDoubleHSlider integralSlider;
TGLayoutHints sliderLayout;
TH1D* myHist;
public:
MyMainFrame();
virtual ~MyMainFrame();
void DoDraw();
};
MyMainFrame::MyMainFrame() : myHist(0) {
const TGWindow *p = gClient->GetRoot();
fMain = new TGMainFrame(p,515,200,kFixedWidth);
fEcanvas = new TRootEmbeddedCanvas(“Ecanvas”,fMain,515,500);
fMain->AddFrame(fEcanvas, new TGLayoutHints(kLHintsExpandX|kLHintsExpandY,0,0,0,0));
TGHorizontalFrame *hframe = new TGHorizontalFrame(fMain,515,10);
integralSlider = new TGDoubleHSlider(hframe,100,kDoubleScaleNo,0);
integralSlider->SetRange(0,1);
integralSlider->SetPosition(0.25,0.75);
sliderLayout = new TGLayoutHints(kLHintsExpandX,100,100,3,4);
hframe->AddFrame(integralSlider,sliderLayout);
fMain->AddFrame(hframe, new TGLayoutHints(kLHintsExpandX,0,0,0,0));
fMain->Connect(“ProcessedConfigure(Event_t*)”, “MyMainFrame”, this, “DoDraw()”);
fMain->SetWindowName(“My frame”);
fMain->MapSubwindows();
fMain->Resize(fMain->GetDefaultSize());
fMain->MapWindow();
}
MyMainFrame::~MyMainFrame() {
fMain->Cleanup();delete fMain;
}
void MyMainFrame::DoDraw() {
//draw a dummy histogram
if (!myHist)
myHist = new TH1D(“myHist”,“myHist”,10,0,10);
fEcanvas->GetCanvas()->SetRightMargin(0.5);
fEcanvas->GetCanvas()->cd();
myHist->Draw();
double canvasWidth = fEcanvas->GetCanvas()->GetWw();
double slideFactor = 1.;
double slideLeftFactor = 0.;
slideLeftFactor = fEcanvas->GetCanvas()->GetLeftMargin();
slideFactor = 1. - fEcanvas->GetCanvas()->GetLeftMargin() - fEcanvas->GetCanvas()->GetRightMargin();
sliderLayout->SetPadLeft(canvasWidthslideLeftFactor);
sliderLayout->SetPadRight(canvasWidth(1.-slideFactor-slideLeftFactor));
integralSlider->SetWidth(canvasWidth*slideFactor);
fMain->Layout();
}
void guiExample() {
MyMainFrame* f = new MyMainFrame();
f->DoDraw();
}
[/code]
Cheers, Bertrand.