#include "TGFrame.h" #include "TGButton.h" #include "TRootEmbeddedCanvas.h" #include "TCanvas.h" class MainFrame: public TGMainFrame { private: TGCompositeFrame *MyCompositeFrame; TRootEmbeddedCanvas *MyEmbeddedCanvas; public: MainFrame(const TGWindow *p); void CreateNewCanvas(); ClassDef(MainFrame, 0) }; void MainFrame::CreateNewCanvas() { if (MyEmbeddedCanvas) { MyEmbeddedCanvas->GetCanvas()->cd(); gVirtualX->CloseWindow(); MyCompositeFrame->Cleanup(); } MyEmbeddedCanvas = new TRootEmbeddedCanvas(0, MyCompositeFrame); MyCompositeFrame->AddFrame(MyEmbeddedCanvas, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX | kLHintsExpandY)); MyCompositeFrame->MapSubwindows(); MyCompositeFrame->Layout(); } MainFrame::MainFrame(const TGWindow *p) : TGMainFrame(p), MyCompositeFrame(0), MyEmbeddedCanvas(0) { SetCleanup(kDeepCleanup); TGTextButton *MyButton=new TGTextButton(this, "Click me"); MyButton->Connect("Clicked()", "MainFrame", this, "CreateNewCanvas()"); AddFrame(MyButton, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX)); AddFrame(MyCompositeFrame=new TGCompositeFrame(this), new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX | kLHintsExpandY)); MapSubwindows(); Resize(700, 500); MapWindow(); CreateNewCanvas(); } void xorgsolution() { new MainFrame(gClient->GetRoot()); }