📄 treelay.cpp
字号:
///////////////////////////////////////////////////////////////////////////////// Name: treelay.cpp// Purpose: wxTreeLayout sample// Author: Julian Smart// Modified by:// Created: 7/4/98// RCS-ID: $Id: treelay.cpp,v 1.7 2004/09/27 19:24:39 ABX Exp $// Copyright: (c) 1998 Julian Smart// Licence: wxWindows licence///////////////////////////////////////////////////////////////////////////////// For compilers that support precompilation, includes "wx.h".#include "wx/wxprec.h"#ifdef __BORLANDC__#pragma hdrstop#endif#ifndef WX_PRECOMP#include "wx/wx.h"#endif#include "wx/deprecated/setup.h"#if !wxUSE_TREELAYOUT#error Please set wxUSE_TREELAYOUT to 1 in contrib/include/wx/deprecated/setup.h and recompile.#endif#include "wx/deprecated/treelay.h"#include "treelay.h"wxTreeLayoutStored *myTree = (wxTreeLayoutStored *) NULL;// A macro needed for some compilers (AIX) that need 'main' to be defined// in the application itself.IMPLEMENT_APP(MyApp)// The `main program' equivalent, creating the windows and returning the// main framebool MyApp::OnInit(){ // Create the main frame window MyFrame* frame = new MyFrame(NULL, _T("Tree Test"), wxDefaultPosition, wxSize(400, 550));#if wxUSE_STATUSBAR // Give it a status line frame->CreateStatusBar(2);#endif // wxUSE_STATUSBAR // Give it an icon#ifdef __WINDOWS__ wxIcon icon(_T("tree_icn")); frame->SetIcon(icon);#endif // Make a menubar wxMenu *file_menu = new wxMenu; file_menu->Append(TEST_LEFT_RIGHT, _T("&Left to right"), _T("Redraw left to right")); file_menu->Append(TEST_TOP_BOTTOM, _T("&Top to bottom"), _T("Redraw top to bottom")); file_menu->AppendSeparator(); file_menu->Append(TEST_QUIT, _T("E&xit"), _T("Quit program")); wxMenu *help_menu = new wxMenu; help_menu->Append(TEST_ABOUT, _T("&About"), _T("About Tree Test")); wxMenuBar* menu_bar = new wxMenuBar; menu_bar->Append(file_menu, _T("&File")); menu_bar->Append(help_menu, _T("&Help")); // Associate the menu bar with the frame frame->SetMenuBar(menu_bar); MyCanvas *canvas = new MyCanvas(frame); // Give it scrollbars: the virtual canvas is 20 * 50 = 1000 pixels in each direction canvas->SetScrollbars(20, 20, 50, 50); frame->canvas = canvas; myTree = new wxTreeLayoutStored(); wxClientDC dc(canvas); wxFont font(10, wxROMAN, wxNORMAL, wxBOLD); dc.SetFont(font); TreeTest(*myTree, dc); frame->Show(true);#if wxUSE_STATUSBAR frame->SetStatusText(_T("Hello, tree!"));#endif // wxUSE_STATUSBAR // Return the main frame window return true;}int MyApp::OnExit(){ if (myTree) { delete myTree; myTree = (wxTreeLayoutStored *) NULL; } return 0;}void MyApp::TreeTest(wxTreeLayoutStored& tree, wxDC& dc){ tree.Initialize(200); tree.AddChild(_T("animal")); tree.AddChild(_T("mammal"), _T("animal")); tree.AddChild(_T("insect"), _T("animal")); tree.AddChild(_T("bird"), _T("animal")); tree.AddChild(_T("man"), _T("mammal")); tree.AddChild(_T("cat"), _T("mammal")); tree.AddChild(_T("dog"), _T("mammal")); tree.AddChild(_T("giraffe"), _T("mammal")); tree.AddChild(_T("elephant"), _T("mammal")); tree.AddChild(_T("donkey"), _T("mammal")); tree.AddChild(_T("horse"), _T("mammal")); tree.AddChild(_T("fido"), _T("dog")); tree.AddChild(_T("domestic cat"), _T("cat")); tree.AddChild(_T("lion"), _T("cat")); tree.AddChild(_T("tiger"), _T("cat")); tree.AddChild(_T("felix"), _T("domestic cat")); tree.AddChild(_T("socks"), _T("domestic cat")); tree.AddChild(_T("beetle"), _T("insect")); tree.AddChild(_T("earwig"), _T("insect")); tree.AddChild(_T("eagle"), _T("bird")); tree.AddChild(_T("bluetit"), _T("bird")); tree.AddChild(_T("sparrow"), _T("bird")); tree.AddChild(_T("blackbird"), _T("bird")); tree.AddChild(_T("emu"), _T("bird")); tree.AddChild(_T("crow"), _T("bird")); tree.DoLayout(dc);}BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(TEST_QUIT, MyFrame::OnQuit) EVT_MENU(TEST_ABOUT, MyFrame::OnAbout) EVT_MENU(TEST_LEFT_RIGHT, MyFrame::OnLeftRight) EVT_MENU(TEST_TOP_BOTTOM, MyFrame::OnTopBottom) EVT_CLOSE(MyFrame::OnCloseWindow)END_EVENT_TABLE()// Define my frame constructorMyFrame::MyFrame(wxWindow *parent, const wxString& title, const wxPoint& pos, const wxSize& size): wxFrame(parent, wxID_ANY, title, pos, size){}void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)){ Close(true);}void MyFrame::OnLeftRight(wxCommandEvent& WXUNUSED(event)){ if (myTree) { myTree->SetOrientation(false); wxClientDC dc(canvas); wxFont font(10, wxROMAN, wxNORMAL, wxBOLD); dc.SetFont(font); wxGetApp().TreeTest(*myTree, dc); canvas->Refresh(); }}void MyFrame::OnTopBottom(wxCommandEvent& WXUNUSED(event)){ if (myTree) { myTree->SetOrientation(true); wxClientDC dc(canvas); wxFont font(10, wxROMAN, wxNORMAL, wxBOLD); dc.SetFont(font); wxGetApp().TreeTest(*myTree, dc); canvas->Refresh(); }}void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)){ (void)wxMessageBox(_T("wxWidgets tree library demo Vsn 2.0\nAuthor: Julian Smart (c) 1998"), _T("About tree test"));}void MyFrame::OnCloseWindow(wxCloseEvent& WXUNUSED(event)){ Destroy();}BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow) EVT_PAINT(MyCanvas::OnPaint)END_EVENT_TABLE()// Define a constructor for my canvasMyCanvas::MyCanvas(wxWindow *parent): wxScrolledWindow(parent, wxID_ANY){ SetBackgroundColour(*wxWHITE);}// Define the repainting behaviourvoid MyCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)){ wxPaintDC dc(this); PrepareDC(dc); if (myTree) { wxFont font(10, wxROMAN, wxNORMAL, wxBOLD); dc.SetFont(font); myTree->Draw(dc); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -