git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8858 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			173 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			173 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        simple.cpp
 | |
| // Author:      XX
 | |
| // Created:     XX/XX/XX
 | |
| // Copyright:   
 | |
| /////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| #ifdef __GNUG__
 | |
|     #pragma implementation "simple.cpp"
 | |
| #endif
 | |
| 
 | |
| // For compilers that support precompilation
 | |
| #include "wx/wxprec.h"
 | |
| 
 | |
| #ifdef __BORLANDC__
 | |
|     #pragma hdrstop
 | |
| #endif
 | |
| 
 | |
| // Include private headers
 | |
| #include "simple.h"
 | |
| 
 | |
| // Include icon header
 | |
| #if defined(__WXGTK__) || defined(__WXMOTIF__)
 | |
|     #include "mondrian.xpm"
 | |
| #endif
 | |
| 
 | |
| // Include image
 | |
| #include "smile.xpm"
 | |
|     
 | |
| // WDR: class implementations
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // MyFrame
 | |
| //------------------------------------------------------------------------------
 | |
| 
 | |
| // WDR: event table for MyFrame
 | |
| 
 | |
| BEGIN_EVENT_TABLE(MyFrame,wxFrame)
 | |
|     EVT_MENU(ID_QUIT, MyFrame::OnQuit)
 | |
|     EVT_CLOSE(MyFrame::OnCloseWindow)
 | |
|     EVT_TIMER(-1, MyFrame::OnTimer)
 | |
| END_EVENT_TABLE()
 | |
| 
 | |
| MyFrame::MyFrame( wxWindow *parent, wxWindowID id, const wxString &title,
 | |
|     const wxPoint &position, const wxSize& size, long style ) :
 | |
|     wxFrame( parent, id, title, position, size, style )
 | |
| {
 | |
|     CreateMyMenuBar();
 | |
|     
 | |
|     CreateStatusBar(1);
 | |
|     SetStatusText( "Welcome to wxCanvas sample!" );
 | |
|     
 | |
|     SetIcon(wxICON(mondrian));
 | |
| 
 | |
|     // Create wxCanvasAdmin and wxCanvas.
 | |
|     m_admin = new wxCanvasAdmin;
 | |
|     wxCanvas *canvas = new wxCanvas( m_admin, this, -1 );
 | |
|     
 | |
|     canvas->SetScrollbars( 10, 10, 40, 40 );
 | |
|     
 | |
|     // The wxCanvasAdmin need to know about all Admin wxCanvas objects.
 | |
|     m_admin->Append( canvas );
 | |
|     
 | |
|     // One wxCanvas is the active one (current rendering and current
 | |
|     // world coordinates).
 | |
|     m_admin->SetActive( canvas );
 | |
|     
 | |
|     // One object group is the root in every canvas.
 | |
|     wxCanvasObjectGroup *root = new wxCanvasObjectGroup(0,0);
 | |
|     root->DeleteContents( TRUE );
 | |
| 
 | |
|     // Bunch of rects and images.
 | |
|     wxBitmap bitmap( smile_xpm );
 | |
|     wxImage image( bitmap );
 | |
| 
 | |
|     m_smile1 = new wxCanvasImage( image, 0,70,32,32 );
 | |
|     root->Append( m_smile1 );
 | |
| 
 | |
|     wxCanvasCircle *circ = new wxCanvasCircle( 170,70,50 );
 | |
|     circ->SetBrush( *wxBLUE_BRUSH );
 | |
|     root->Append( circ );
 | |
|     
 | |
|     int i;
 | |
|     for (i = 10; i < 300; i+=10)
 | |
|     {
 | |
|         wxCanvasRect *r = new wxCanvasRect( i,50,3,140 );
 | |
|         r->SetBrush( *wxRED_BRUSH );
 | |
|         root->Append( r );
 | |
|     }
 | |
|     
 | |
|     m_smile2 = new wxCanvasImage( image, 0,110,32,32 );
 | |
|     root->Append( m_smile2 );
 | |
| 
 | |
|     for (i = 15; i < 300; i+=10)
 | |
|     {
 | |
|         wxCanvasRect *r = new wxCanvasRect( i,50,3,140 );
 | |
|         r->SetBrush( *wxRED_BRUSH );
 | |
|         root->Append( r );
 | |
|     }
 | |
|     
 | |
|     // This will call all object and children recursivly so
 | |
|     // all know what their wxCanvasAdmin is. Call at the end.
 | |
|     root->SetAdmin( m_admin );
 | |
|     
 | |
|     // One object group is the root object.
 | |
|     canvas->SetRoot( root );
 | |
|     
 | |
|     m_timer = new wxTimer( this );
 | |
|     m_timer->Start( 80, FALSE );
 | |
| }
 | |
| 
 | |
| MyFrame::~MyFrame()
 | |
| {
 | |
|     delete m_timer;
 | |
| }
 | |
| 
 | |
| void MyFrame::CreateMyMenuBar()
 | |
| {
 | |
|     wxMenu *file_menu = new wxMenu;
 | |
|     file_menu->Append( ID_QUIT, "Quit...", "Quit program" );
 | |
|     
 | |
|     wxMenuBar *menu_bar = new wxMenuBar();
 | |
|     menu_bar->Append( file_menu, "File" );
 | |
|     
 | |
|     SetMenuBar( menu_bar );
 | |
| }
 | |
| 
 | |
| // WDR: handler implementations for MyFrame
 | |
| 
 | |
| void MyFrame::OnQuit( wxCommandEvent &event )
 | |
| {
 | |
|      Close( TRUE );
 | |
| }
 | |
| 
 | |
| void MyFrame::OnCloseWindow( wxCloseEvent &event )
 | |
| {
 | |
|     // if ! saved changes -> return
 | |
|     
 | |
|     Destroy();
 | |
| }
 | |
| 
 | |
| void MyFrame::OnTimer( wxTimerEvent &event )
 | |
| {
 | |
|     m_smile1->MoveRelative( 1, 0);
 | |
|     m_smile2->MoveRelative( 1, 0);
 | |
|     
 | |
|     wxWakeUpIdle();
 | |
| }
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // MyApp
 | |
| //------------------------------------------------------------------------------
 | |
| 
 | |
| IMPLEMENT_APP(MyApp)
 | |
| 
 | |
| MyApp::MyApp()
 | |
| {
 | |
| }
 | |
| 
 | |
| bool MyApp::OnInit()
 | |
| {
 | |
|     MyFrame *frame = new MyFrame( NULL, -1, "SuperApp", wxPoint(20,20), wxSize(500,340) );
 | |
|     frame->Show( TRUE );
 | |
|     
 | |
|     return TRUE;
 | |
| }
 | |
| 
 | |
| int MyApp::OnExit()
 | |
| {
 | |
|     return 0;
 | |
| }
 | |
| 
 |