#include <wx/image.h>
#include <wx/file.h>
#include <wx/timer.h>
+#include <wx/log.h>
+
#include "smile.xpm"
void OnQuit( wxCommandEvent &event );
void OnTimer( wxTimerEvent &event );
- wxCanvas *m_canvas;
- wxCanvasObject *m_sm1;
- wxCanvasObject *m_sm2;
- wxTimer *m_timer;
+ wxCanvas *m_canvas;
+ wxCanvasObject *m_sm1;
+ wxCanvasObject *m_sm2;
+ wxCanvasObject *m_sm3;
+ wxCanvasObject *m_sm4;
+ wxTimer *m_timer;
+ wxTextCtrl *m_log;
private:
DECLARE_DYNAMIC_CLASS(MyFrame)
MyFrame::MyFrame()
: wxFrame( (wxFrame *)NULL, -1, "wxCanvas sample",
- wxPoint(20,20), wxSize(470,360) )
+ wxPoint(20,20), wxSize(470,460) )
{
- wxMenu *file_menu = new wxMenu();
- file_menu->Append( ID_ABOUT, "&About...");
- file_menu->AppendSeparator();
- file_menu->Append( ID_QUIT, "E&xit");
+ wxMenu *file_menu = new wxMenu();
+ file_menu->Append( ID_ABOUT, "&About...");
+ file_menu->AppendSeparator();
+ file_menu->Append( ID_QUIT, "E&xit");
+
+ wxMenuBar *menu_bar = new wxMenuBar();
+ menu_bar->Append(file_menu, "&File");
+
+ SetMenuBar( menu_bar );
+
+ CreateStatusBar(2);
+ int widths[] = { -1, 100 };
+ SetStatusWidths( 2, widths );
+
+ m_canvas = new wxCanvas( this, -1, wxPoint(0,0), wxSize(10,10) );
+
+ m_canvas->Freeze();
+
+ m_canvas->SetArea( 400, 600 );
+ m_canvas->SetColour( 255, 255, 255 );
- wxMenuBar *menu_bar = new wxMenuBar();
- menu_bar->Append(file_menu, "&File");
+ wxBitmap bitmap( smile_xpm );
+ wxImage image( bitmap );
- SetMenuBar( menu_bar );
+ m_sm1 = new wxCanvasImage( image, 0, 70 );
+ m_canvas->Append( m_sm1 );
- CreateStatusBar(2);
- int widths[] = { -1, 100 };
- SetStatusWidths( 2, widths );
+ int i;
+ for (i = 10; i < 300; i+=10)
+ m_canvas->Append( new wxCanvasRect( i,50,3,140, 255,0,0 ) );
- m_canvas = new wxCanvas( this, -1, wxPoint(0,0), wxSize(10,10) );
+ m_sm2 = new wxCanvasImage( image, 0, 140 );
+ m_canvas->Append( m_sm2 );
- m_canvas->SetArea( 400, 600 );
- m_canvas->SetColour( 255, 255, 255 );
+ for (i = 15; i < 300; i+=10)
+ m_canvas->Append( new wxCanvasRect( i,50,3,140, 255,0,0 ) );
- wxBitmap bitmap( smile_xpm );
- wxImage image( bitmap );
+ wxButton *button = new wxButton( m_canvas, -1, "Hello", wxPoint(80,50) );
+ m_canvas->Append( new wxCanvasControl( button ) );
- m_sm1 = new wxCanvasImage( image, 0, 70 );
- m_canvas->Append( m_sm1 );
+ m_canvas->Append( new wxCanvasText( "Hello", 180, 50,
+ wxGetApp().GetFontPath() + "/times.ttf", 20 ) );
- int i;
- for (i = 10; i < 300; i+=10)
- m_canvas->Append( new wxCanvasRect( i,50,3,140, 255,0,0 ) );
+ m_sm3 = new wxCanvasImage( image, 0, 210 );
+ m_canvas->Append( m_sm3 );
- m_sm2 = new wxCanvasImage( image, 0, 140 );
- m_canvas->Append( m_sm2 );
+ for (i = 10; i < 300; i+=10)
+ m_canvas->Append( new wxCanvasLine( 10,150,i,200, 0,255,0 ) );
+
+ m_sm4 = new wxCanvasImage( image, 0, 270 );
+ m_canvas->Append( m_sm4 );
- for (i = 15; i < 300; i+=10)
- m_canvas->Append( new wxCanvasRect( i,50,3,140, 255,0,0 ) );
+ m_canvas->Thaw();
- wxButton *button = new wxButton( m_canvas, -1, "Hello", wxPoint(80,50) );
- m_canvas->Append( new wxCanvasControl( button ) );
+ m_log = new wxTextCtrl( this, -1, "", wxPoint(0,0), wxSize(100,100), wxTE_MULTILINE );
+ wxLog *old_log = wxLog::SetActiveTarget( new wxLogTextCtrl( m_log ) );
+ delete old_log;
+
+ wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
+
+ topsizer->Add( m_canvas, 1, wxEXPAND );
+ topsizer->Add( m_log, 0, wxEXPAND );
- m_canvas->Append( new wxCanvasText( "Hello", 180, 50,
- wxGetApp().GetFontPath() + "/times.ttf", 20 ) );
+ SetAutoLayout( TRUE );
+ SetSizer( topsizer );
- m_timer = new wxTimer( this );
- m_timer->Start( 100, FALSE );
+ m_timer = new wxTimer( this );
+ m_timer->Start( 100, FALSE );
}
MyFrame::~MyFrame()
{
m_sm1->Move( m_sm1->GetX()+1, m_sm1->GetY() );
m_sm2->Move( m_sm2->GetX()+1, m_sm2->GetY() );
+ m_sm3->Move( m_sm3->GetX()+1, m_sm3->GetY() );
+ m_sm4->Move( m_sm4->GetX()+1, m_sm4->GetY() );
wxWakeUpIdle();
}