+
+enum {
+ PU_RESTORE = 10001,
+ PU_NEW_ICON,
+ PU_EXIT,
+};
+
+
+BEGIN_EVENT_TABLE(MyTaskBarIcon, wxTaskBarIcon)
+ EVT_MENU(PU_RESTORE, MyTaskBarIcon::OnMenuRestore)
+ EVT_MENU(PU_EXIT, MyTaskBarIcon::OnMenuExit)
+ EVT_MENU(PU_NEW_ICON,MyTaskBarIcon::OnMenuSetNewIcon)
+END_EVENT_TABLE()
+
+void MyTaskBarIcon::OnMenuRestore(wxCommandEvent& )
+{
+ dialog->Show(TRUE);
+}
+
+void MyTaskBarIcon::OnMenuExit(wxCommandEvent& )
+{
+ dialog->Close(TRUE);
+
+ // Nudge wxWindows into destroying the dialog, since
+ // with a hidden window no messages will get sent to put
+ // it into idle processing.
+ wxGetApp().ProcessIdle();
+}
+
+void MyTaskBarIcon::OnMenuSetNewIcon(wxCommandEvent&)
+{
+#ifdef __WXMSW__
+ wxIcon icon(wxT("wxDEFAULT_FRAME"));
+
+ if (!SetIcon(icon, wxT("wxTaskBarIcon Sample")))
+ wxMessageBox(wxT("Could not set new icon."));
+#endif
+}
+