#include "TROOT.h" #include "TCanvas.h" #include "TRootCanvas.h" #include using namespace std; class MyCanvas { private: TCanvas *fCanvas; public: MyCanvas(Int_t wx=800, Int_t wy =200, Int_t ww=400, Int_t wh =200); virtual ~MyCanvas(); TCanvas *GetCanvas() { return fCanvas; }; void CanvasClosed(); void WindowClosed(); ClassDef(MyCanvas,0) }; ClassImp(MyCanvas) MyCanvas::MyCanvas(Int_t wx, Int_t wy, Int_t ww, Int_t wh) { fCanvas = new TCanvas("ccc", "ccc", wx, wy, ww, wh); fCanvas->Connect("Closed()", "MyCanvas", this, "CanvasClosed()"); // To get notification when the window is closed from the // window manager the following is needed as of root 6.10. TRootCanvas *rc = (TRootCanvas *)fCanvas->GetCanvasImp(); rc->Connect("CloseWindow()", "MyCanvas", this, "WindowClosed()"); fCanvas->Draw(); } MyCanvas::~MyCanvas() { cout << "enter dtor MyCanvas" << endl; delete fCanvas; cout << "exit dtor MyCanvas" << endl; } void MyCanvas::CanvasClosed() { cout << "CanvasClosed()" << endl; } void MyCanvas::WindowClosed() { cout << "WindowClosed()" << endl; delete this; }