EVT_MENU(MDI_CHANGE_POSITION, MyChild::OnChangePosition)
EVT_MENU(MDI_CHANGE_SIZE, MyChild::OnChangeSize)
+#if wxUSE_CLIPBOARD
+ EVT_MENU(wxID_PASTE, MyChild::OnPaste)
+ EVT_UPDATE_UI(wxID_PASTE, MyChild::OnUpdatePaste)
+#endif // wxUSE_CLIPBOARD
+
EVT_SIZE(MyChild::OnSize)
EVT_MOVE(MyChild::OnMove)
InitToolBar(GetToolBar());
#endif // wxUSE_TOOLBAR
+#if wxUSE_ACCEL
// Accelerators
wxAcceleratorEntry entries[3];
entries[0].Set(wxACCEL_CTRL, (int) 'N', MDI_NEW_WINDOW);
entries[2].Set(wxACCEL_CTRL, (int) 'A', MDI_ABOUT);
wxAcceleratorTable accel(3, entries);
SetAcceleratorTable(accel);
+#endif // wxUSE_ACCEL
}
void MyFrame::OnClose(wxCloseEvent& event)
option_menu->AppendSeparator();
option_menu->Append(MDI_CHANGE_POSITION, _T("Move frame\tCtrl-M"));
option_menu->Append(MDI_CHANGE_SIZE, _T("Resize frame\tCtrl-S"));
+#if wxUSE_CLIPBOARD
+ option_menu->AppendSeparator();
+ option_menu->Append(wxID_PASTE, _T("Copy text from clipboard\tCtrl-V"));
+#endif // wxUSE_CLIPBOARD
wxMenu *help_menu = new wxMenu;
help_menu->Append(MDI_ABOUT, _T("&About"));
subframe->Show(true);
}
-void MyFrame::OnSize(wxSizeEvent&
+void MyFrame::OnSize(wxSizeEvent&
#ifdef __WXUNIVERSAL__
event
#else
// FIXME: On wxX11, we need the MDI frame to process this
// event, but on other platforms this should not
// be done.
-#ifdef __WXUNIVERSAL__
+#ifdef __WXUNIVERSAL__
event.Skip();
#endif
}
// Define the repainting behaviour
void MyCanvas::OnDraw(wxDC& dc)
{
+ if ( !m_text.empty() )
+ dc.DrawText(m_text, 10, 10);
+
dc.SetFont(*wxSWISS_FONT);
dc.SetPen(*wxGREEN_PEN);
dc.DrawLine(0, 0, 200, 200);
event.Skip();
}
+#if wxUSE_CLIPBOARD
+
+#include "wx/clipbrd.h"
+
+void MyChild::OnPaste(wxCommandEvent& WXUNUSED(event))
+{
+ wxClipboardLocker lock;
+ wxTextDataObject data;
+ canvas->SetText(wxTheClipboard->GetData(data) ? data.GetText().c_str()
+ : _T("No text on clipboard"));
+}
+
+void MyChild::OnUpdatePaste(wxUpdateUIEvent& event)
+{
+ wxClipboardLocker lock;
+ event.Enable( wxTheClipboard->IsSupported(wxDF_TEXT) );
+}
+#endif // wxUSE_CLIPBOARD