#include "pch.h" ////////////////////////////////////////////////////////////////////////////// // // // ////////////////////////////////////////////////////////////////////////////// class CaptionImpl : public ICaption, public EventTargetContainer { private: TRef m_pbuttonClose; TRef m_pbuttonRestore; TRef m_pbuttonMinimize; TRef m_ppane; TRef m_psite; void DoCreateButton( Modeler* pmodeler, TRef& pbuttonPane, const ZString& str, const WinPoint& offset, Pane* ppane ) { TRef pface = CreateButtonFacePane( pmodeler->LoadSurface(str, false), ButtonFaceUp | ButtonFaceDown ); pbuttonPane = CreateButton(pface); pbuttonPane->SetOffset(offset); ppane->InsertAtTop(pbuttonPane); } public: CaptionImpl(Modeler* pmodeler, Pane* ppane, ICaptionSite* psite) : m_ppane(ppane), m_psite(psite) { DoCreateButton(pmodeler, m_pbuttonClose, "btnclosebmp", WinPoint(780, 5), ppane); DoCreateButton(pmodeler, m_pbuttonRestore, "btnrestorebmp", WinPoint(761, 5), ppane); DoCreateButton(pmodeler, m_pbuttonMinimize, "btnminimizebmp", WinPoint(744, 5), ppane); AddEventTarget(OnClose, m_pbuttonClose->GetEventSource()); AddEventTarget(OnRestore, m_pbuttonRestore->GetEventSource()); AddEventTarget(OnMinimize, m_pbuttonMinimize->GetEventSource()); } bool OnClose() { m_psite->OnCaptionClose(); return true; } bool OnMinimize() { m_psite->OnCaptionMinimize(); return true; } bool OnRestore() { m_psite->OnCaptionRestore(); return true; } void SetFullscreen(bool bFullscreen) { m_pbuttonClose->SetHidden(!bFullscreen); m_pbuttonRestore->SetHidden(!bFullscreen); m_pbuttonMinimize->SetHidden(!bFullscreen); } }; ////////////////////////////////////////////////////////////////////////////// // // // ////////////////////////////////////////////////////////////////////////////// TRef CreateCaption(Modeler* pmodeler, Pane* ppane, ICaptionSite* psite) { return new CaptionImpl(pmodeler, ppane, psite); }