+protected:
+ // hook the child view into event handlers chain here
+ virtual bool TryBefore(wxEvent& event)
+ {
+ return TryProcessEvent(event) || BaseClass::TryBefore(event);
+ }
+
+private:
+ void OnActivate(wxActivateEvent& event)
+ {
+ BaseClass::OnActivate(event);
+
+ if ( m_childView )
+ m_childView->Activate(event.GetActive());
+ }
+
+ void OnCloseWindow(wxCloseEvent& event)
+ {
+ if ( CloseView(event) )
+ Destroy();
+ //else: vetoed
+ }
+
+ wxDECLARE_NO_COPY_TEMPLATE_CLASS_2(wxDocChildFrameAny,
+ ChildFrame, ParentFrame);
+};
+
+// ----------------------------------------------------------------------------
+// A default child frame: we need to define it as a class just for wxRTTI,
+// otherwise we could simply typedef it
+// ----------------------------------------------------------------------------
+
+#ifdef __VISUALC6__
+ // "non dll-interface class 'wxDocChildFrameAny<>' used as base interface
+ // for dll-interface class 'wxDocChildFrame'" -- this is bogus as the
+ // template will be DLL-exported but only once it is used as base class
+ // here!
+ #pragma warning (push)
+ #pragma warning (disable:4275)
+#endif
+
+typedef wxDocChildFrameAny<wxFrame, wxFrame> wxDocChildFrameBase;
+
+class WXDLLIMPEXP_CORE wxDocChildFrame : public wxDocChildFrameBase
+{
+public:
+ wxDocChildFrame()
+ {
+ }
+
+ wxDocChildFrame(wxDocument *doc,
+ wxView *view,
+ wxFrame *parent,
+ wxWindowID id,
+ const wxString& title,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxDEFAULT_FRAME_STYLE,
+ const wxString& name = wxFrameNameStr)
+ : wxDocChildFrameBase(doc, view,
+ parent, id, title, pos, size, style, name)
+ {
+ }
+
+ bool Create(wxDocument *doc,
+ wxView *view,
+ wxFrame *parent,
+ wxWindowID id,
+ const wxString& title,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxDEFAULT_FRAME_STYLE,
+ const wxString& name = wxFrameNameStr)
+ {
+ return wxDocChildFrameBase::Create
+ (
+ doc, view,
+ parent, id, title, pos, size, style, name
+ );
+ }
+
+private:
+ DECLARE_CLASS(wxDocChildFrame)
+ wxDECLARE_NO_COPY_CLASS(wxDocChildFrame);
+};
+
+#ifdef __VISUALC6__
+ #pragma warning (pop)
+#endif
+
+// ----------------------------------------------------------------------------
+// A default parent frame
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_CORE wxDocParentFrame : public wxFrame
+{