+    SetIcon(wxICON(sample));
+
+    // menu of the sample
+    wxMenu *menuType = new wxMenu;
+#if wxUSE_NOTEBOOK
+    menuType->AppendRadioItem(ID_BOOK_NOTEBOOK,   wxT("&Notebook\tCtrl-1"));
+#endif
+#if wxUSE_LISTBOOK
+    menuType->AppendRadioItem(ID_BOOK_LISTBOOK,   wxT("&Listbook\tCtrl-2"));
+#endif
+#if wxUSE_CHOICEBOOK
+    menuType->AppendRadioItem(ID_BOOK_CHOICEBOOK, wxT("&Choicebook\tCtrl-3"));
+#endif
+#if wxUSE_TREEBOOK
+    menuType->AppendRadioItem(ID_BOOK_TREEBOOK,   wxT("&Treebook\tCtrl-4"));
+#endif
+#if wxUSE_TOOLBOOK
+    menuType->AppendRadioItem(ID_BOOK_TOOLBOOK,   wxT("T&oolbook\tCtrl-5"));
+#endif
+
+    menuType->Check(ID_BOOK_NOTEBOOK + m_type, true);
+
+    wxMenu *menuOrient = new wxMenu;
+    menuOrient->AppendRadioItem(ID_ORIENT_DEFAULT, wxT("&Default\tCtrl-5"));
+    menuOrient->AppendRadioItem(ID_ORIENT_TOP,     wxT("&Top\tCtrl-6"));
+    menuOrient->AppendRadioItem(ID_ORIENT_BOTTOM,  wxT("&Bottom\tCtrl-7"));
+    menuOrient->AppendRadioItem(ID_ORIENT_LEFT,    wxT("&Left\tCtrl-8"));
+    menuOrient->AppendRadioItem(ID_ORIENT_RIGHT,   wxT("&Right\tCtrl-9"));
+
+    wxMenu *menuOperations = new wxMenu;
+    menuOperations->Append(ID_ADD_PAGE, wxT("&Add page\tAlt-A"));
+    menuOperations->Append(ID_INSERT_PAGE, wxT("&Insert page\tAlt-I"));
+    menuOperations->Append(ID_DELETE_CUR_PAGE, wxT("&Delete current page\tAlt-D"));
+    menuOperations->Append(ID_DELETE_LAST_PAGE, wxT("D&elete last page\tAlt-L"));
+    menuOperations->Append(ID_NEXT_PAGE, wxT("&Next page\tAlt-N"));
+#if wxUSE_TREEBOOK
+    menuOperations->AppendSeparator();
+    menuOperations->Append(ID_ADD_PAGE_BEFORE, wxT("Insert page &before\tAlt-B"));
+    menuOperations->Append(ID_ADD_SUB_PAGE, wxT("Add s&ub page\tAlt-U"));
+#endif
+
+    wxMenu *menuFile = new wxMenu;
+    menuFile->Append(wxID_ANY, wxT("&Type"), menuType, wxT("Type of control"));
+    menuFile->Append(wxID_ANY, wxT("&Orientation"), menuOrient, wxT("Orientation of control"));
+    menuFile->AppendCheckItem(ID_SHOW_IMAGES, wxT("&Show images\tAlt-S"));
+    menuFile->AppendCheckItem(ID_MULTI, wxT("&Multiple lines\tAlt-M"));
+    menuFile->AppendSeparator();
+    menuFile->Append(wxID_EXIT, wxT("E&xit"), wxT("Quits the application"));
+    menuFile->Check(ID_SHOW_IMAGES, m_chkShowImages);
+    menuFile->Check(ID_MULTI, m_multi);
+
+    wxMenuBar *menuBar = new wxMenuBar;
+    menuBar->Append(menuFile, wxT("&File"));
+    menuBar->Append(menuOperations, wxT("&Operations"));
+    SetMenuBar(menuBar);
+
+    // books creation
+    m_panel    = NULL;
+    m_bookCtrl = NULL;
+
+    // create a dummy image list with a few icons
+    const wxSize imageSize(32, 32);
+
+    m_imageList = new wxImageList(imageSize.GetWidth(), imageSize.GetHeight());
+    m_imageList->
+        Add(wxArtProvider::GetIcon(wxART_INFORMATION, wxART_OTHER, imageSize));
+    m_imageList->
+        Add(wxArtProvider::GetIcon(wxART_QUESTION, wxART_OTHER, imageSize));
+    m_imageList->
+        Add(wxArtProvider::GetIcon(wxART_WARNING, wxART_OTHER, imageSize));
+    m_imageList->
+        Add(wxArtProvider::GetIcon(wxART_ERROR, wxART_OTHER, imageSize));
+
+    m_panel = new wxPanel(this);
+
+#if USE_LOG
+    m_text = new wxTextCtrl(m_panel, wxID_ANY, wxEmptyString,
+                            wxDefaultPosition, wxDefaultSize,
+                            wxTE_MULTILINE | wxTE_READONLY);
+
+    m_logTargetOld = wxLog::SetActiveTarget( new wxLogTextCtrl(m_text) );
+#endif // USE_LOG