]> git.saurik.com Git - wxWidgets.git/blame - user/wxTest/wxTest.cpp
Cursor and insert/delete work much better now, code streamlined, still
[wxWidgets.git] / user / wxTest / wxTest.cpp
CommitLineData
c801d85f
KB
1/*
2 * Program: wxTest
3 *
4 * Author: Robert Roebling
5 *
6 * Copyright: (C) 1997, GNU (Robert Roebling)
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 */
22
23#ifdef __GNUG__
24#pragma implementation "wxTest.h"
25#endif
26
27#include "wxTest.h"
28
29#include "folder.xpm"
30#include "list.xpm"
31
32//-----------------------------------------------------------------------------
33// main program
34//-----------------------------------------------------------------------------
35
36IMPLEMENT_APP(MyApp)
37
38//-----------------------------------------------------------------------------
39// MyDialog
40//-----------------------------------------------------------------------------
41
42const ID_RETURN = 100;
43const ID_HELLO = 101;
44
45const ID_CHECKBOX = 110;
46const ID_CHECKBOX_CHECK = 110;
47const ID_CHECKBOX_UNCHECK = 112;
48
49const ID_TEXTCTRL = 115;
50const ID_TEXTCTRL_SET = 116;
51const ID_TEXTCTRL_DEL = 117;
52
53const ID_CHOICE = 120;
54const ID_CHOICE_SEL_NUM = 121;
55const ID_CHOICE_SEL_STR = 122;
56const ID_CHOICE_CLEAR = 123;
57const ID_CHOICE_APPEND = 124;
58
59const ID_LISTBOX = 130;
60const ID_LISTBOX_SEL_NUM = 131;
61const ID_LISTBOX_SEL_STR = 132;
62const ID_LISTBOX_CLEAR = 133;
63const ID_LISTBOX_APPEND = 134;
64
65const ID_RADIOBOX = 130;
66const ID_RADIOBOX_SEL_NUM = 131;
67const ID_RADIOBOX_SEL_STR = 132;
68
69BEGIN_EVENT_TABLE(MyDialog,wxDialog)
70 EVT_BUTTON (ID_RETURN, MyDialog::OnReturnButton)
71 EVT_BUTTON (ID_HELLO, MyDialog::OnHelloButton)
72 EVT_CHECKBOX (ID_CHECKBOX, MyDialog::OnCheckBox)
73 EVT_BUTTON (ID_CHECKBOX_CHECK, MyDialog::OnCheckBoxButtons)
74 EVT_BUTTON (ID_CHECKBOX_UNCHECK, MyDialog::OnCheckBoxButtons)
75 EVT_TEXT (ID_TEXTCTRL, MyDialog::OnTextCtrl)
76 EVT_BUTTON (ID_TEXTCTRL_SET, MyDialog::OnTextCtrlButtons)
77 EVT_BUTTON (ID_TEXTCTRL_DEL, MyDialog::OnTextCtrlButtons)
78 EVT_CHOICE (ID_CHOICE, MyDialog::OnChoice)
79 EVT_BUTTON (ID_CHOICE_SEL_NUM, MyDialog::OnChoiceButtons)
80 EVT_BUTTON (ID_CHOICE_SEL_STR, MyDialog::OnChoiceButtons)
81 EVT_BUTTON (ID_CHOICE_CLEAR, MyDialog::OnChoiceButtons)
82 EVT_BUTTON (ID_CHOICE_APPEND, MyDialog::OnChoiceButtons)
83 EVT_LISTBOX (ID_LISTBOX, MyDialog::OnListBox)
84 EVT_BUTTON (ID_LISTBOX_SEL_NUM, MyDialog::OnListBoxButtons)
85 EVT_BUTTON (ID_LISTBOX_SEL_STR, MyDialog::OnListBoxButtons)
86 EVT_BUTTON (ID_LISTBOX_CLEAR, MyDialog::OnListBoxButtons)
87 EVT_BUTTON (ID_LISTBOX_APPEND, MyDialog::OnListBoxButtons)
88 EVT_RADIOBOX (ID_RADIOBOX, MyDialog::OnRadioBox)
89 EVT_BUTTON (ID_RADIOBOX_SEL_NUM, MyDialog::OnRadioBoxButtons)
90 EVT_BUTTON (ID_RADIOBOX_SEL_STR, MyDialog::OnRadioBoxButtons)
91END_EVENT_TABLE()
92
93//-----------------------------------------------------------------------------
94
95IMPLEMENT_DYNAMIC_CLASS(MyDialog, wxDialog)
96
97MyDialog::MyDialog( wxWindow *parent ) :
98 wxDialog( parent, -1, "TestDialog", wxPoint(20,100), wxSize(700,400), wxDIALOG_MODAL )
99{
100 m_text1 = NULL;
101 m_text2 = NULL;
102
103 (void)new wxStaticBox( this, -1, "CheckBox group", wxPoint(20,10), wxSize(140,180) );
104 m_checkbox = new wxCheckBox( this, ID_CHECKBOX, "CheckBox", wxPoint(40,35), wxSize(100,30) );
105 (void)new wxButton( this, ID_CHECKBOX_CHECK, "Check", wxPoint(40,85), wxSize(100,30) );
106 (void)new wxButton( this, ID_CHECKBOX_UNCHECK, "Uncheck", wxPoint(40,135), wxSize(100,30) );
107
108 (void)new wxStaticBox( this, -1, "TextCtrl group", wxPoint(20,200), wxSize(140,180) );
109 m_textctrl = new wxTextCtrl( this, ID_TEXTCTRL, "TextCtrl", wxPoint(40,35+190), wxSize(100,30) );
110 (void)new wxButton( this, ID_TEXTCTRL_SET, "Set 'Hi!'", wxPoint(40,85+190), wxSize(100,30) );
111 (void)new wxButton( this, ID_TEXTCTRL_DEL, "Delete", wxPoint(40,135+190), wxSize(100,30) );
112
113 wxString choices[4] =
114 {
115 "This",
116 "is",
117 "a",
118 "wonderfull example."
119 };
120
121 (void)new wxStaticBox( this, -1, "Choice group", wxPoint(180,10), wxSize(140,330) );
122 m_choice = new wxChoice( this, ID_CHOICE, wxPoint(200,35), wxSize(100,30), 4, choices );
123 (void)new wxButton( this, ID_CHOICE_SEL_NUM, "Select #2", wxPoint(200,130), wxSize(100,30) );
124 (void)new wxButton( this, ID_CHOICE_SEL_STR, "Select 'This'", wxPoint(200,180), wxSize(100,30) );
125 (void)new wxButton( this, ID_CHOICE_CLEAR, "Clear", wxPoint(200,230), wxSize(100,30) );
126 (void)new wxButton( this, ID_CHOICE_APPEND, "Append 'Hi!'", wxPoint(200,280), wxSize(100,30) );
127
128 (void)new wxStaticBox( this, 100, "ListBox group", wxPoint(340,10), wxSize(140,330) );
129 m_listbox = new wxListBox( this, ID_LISTBOX, wxPoint(360,35), wxSize(100,70), 4, choices );
130 (void)new wxButton( this, ID_LISTBOX_SEL_NUM, "Select #2", wxPoint(360,130), wxSize(100,30) );
131 (void)new wxButton( this, ID_LISTBOX_SEL_STR, "Select 'This'", wxPoint(360,180), wxSize(100,30) );
132 (void)new wxButton( this, ID_LISTBOX_CLEAR, "Clear", wxPoint(360,230), wxSize(100,30) );
133 (void)new wxButton( this, ID_LISTBOX_APPEND, "Append 'Hi!'", wxPoint(360,280), wxSize(100,30) );
134
135 (void)new wxStaticBox( this, -1, "RadioBox group", wxPoint(500,10), wxSize(180,230) );
136 m_radiobox = new wxRadioBox( this, ID_RADIOBOX, "Test", wxPoint(520,35), wxSize(-1,-1), 4, choices,
137 1, wxRA_VERTICAL );
138
139 (void)new wxButton( this, ID_HELLO, "wxScreenDC", wxPoint(540,280), wxSize(120,40) );
140 (void)new wxButton( this, ID_RETURN, "Return", wxPoint(540,340), wxSize(120,40) );
141
142 m_text1 = new wxStaticText( this, -1, "No event.", wxPoint(170,350), wxSize(300,-1) );
143 m_text2 = new wxStaticText( this, -1, "No information.", wxPoint(170,370), wxSize(300,-1) );
144
145 InitDialog();
146};
147
148void MyDialog::OnTextCtrl( wxCommandEvent &WXUNUSED(event) )
149{
150};
151
152void MyDialog::OnTextCtrlButtons( wxCommandEvent &event )
153{
154 switch (event.GetId())
155 {
156 case ID_TEXTCTRL_SET:
157 {
158 m_textctrl->SetValue( "Hi!" );
159 break;
160 };
161 case ID_TEXTCTRL_DEL:
162 {
163 m_textctrl->Delete();
164 break;
165 };
166 };
167};
168
169void MyDialog::OnRadioBox( wxCommandEvent &event )
170{
171 if (!m_text1) return;
172 m_text1->SetLabel( "RadioBox Event:");
173 wxString tmp = "RadioBox selection string is: ";
174 tmp += event.GetString();
175 m_text2->SetLabel( tmp );
176};
177
178void MyDialog::OnRadioBoxButtons( wxCommandEvent &WXUNUSED(event) )
179{
180};
181
182void MyDialog::OnListBox( wxCommandEvent &event )
183{
184 if (!m_text1) return;
185 m_text1->SetLabel( "ListBox Event:");
186 wxString tmp = "ListBox selection string is: ";
187 tmp += event.GetString();
188 m_text2->SetLabel( tmp );
189};
190
191void MyDialog::OnListBoxButtons( wxCommandEvent &event )
192{
193 switch (event.GetId())
194 {
195 case ID_LISTBOX_SEL_NUM:
196 {
197 m_listbox->SetSelection( 2 );
198 break;
199 };
200 case ID_LISTBOX_SEL_STR:
201 {
202 m_listbox->SetStringSelection( "This" );
203 break;
204 };
205 case ID_LISTBOX_CLEAR:
206 {
207 m_listbox->Clear();
208 break;
209 };
210 case ID_LISTBOX_APPEND:
211 {
212 m_listbox->Append( "Hi!" );
213 break;
214 };
215 };
216};
217
218void MyDialog::OnCheckBox( wxCommandEvent &event )
219{
220 if (!m_text1) return;
221 m_text1->SetLabel( "CheckBox Event:");
222 wxString tmp = "Checkbox is ";
223 if (event.Checked())
224 tmp += "checked.";
225 else
226 tmp += "unchecked.";
227 m_text2->SetLabel( tmp );
228};
229
230void MyDialog::OnCheckBoxButtons( wxCommandEvent &event )
231{
232 switch (event.GetId())
233 {
234 case ID_CHECKBOX_CHECK:
235 {
236 m_checkbox->SetValue( TRUE );
237 break;
238 };
239 case ID_CHECKBOX_UNCHECK:
240 {
241 m_checkbox->SetValue( FALSE );
242 break;
243 };
244 };
245};
246
247void MyDialog::OnChoice( wxCommandEvent &event )
248{
249 if (!m_text1) return;
250 m_text1->SetLabel( "Choice Event:");
251 wxString tmp = "Choice selection string is: ";
252 tmp += event.GetString();
253 m_text2->SetLabel( tmp );
254};
255
256void MyDialog::OnChoiceButtons( wxCommandEvent &event )
257{
258 switch (event.GetId())
259 {
260 case ID_CHOICE_SEL_NUM:
261 {
262 m_choice->SetSelection( 2 );
263 break;
264 };
265 case ID_CHOICE_SEL_STR:
266 {
267 m_choice->SetStringSelection( "This" );
268 break;
269 };
270 case ID_CHOICE_CLEAR:
271 {
272 m_choice->Clear();
273 break;
274 };
275 case ID_CHOICE_APPEND:
276 {
277 m_choice->Append( "Hi!" );
278 break;
279 };
280 };
281};
282
283void MyDialog::OnReturnButton( wxCommandEvent &WXUNUSED(event) )
284{
285 EndModal( 1 );
286};
287
288void MyDialog::OnHelloButton( wxCommandEvent &WXUNUSED(event) )
289{
290 wxMessageDialog *dialog;
291 dialog = new wxMessageDialog( this, "Now, I will paint on Screen.", "wxGTK" );
1a6944fd 292 dialog->ShowModal();
c801d85f
KB
293 delete dialog;
294
295 wxScreenDC dc;
296 dc.StartDrawingOnTop();
297
298 int w = wxSystemSettings::GetSystemMetric( wxSYS_SCREEN_X );
299 int h = wxSystemSettings::GetSystemMetric( wxSYS_SCREEN_Y );
300
301 dc.SetPen( *wxWHITE_PEN );
302 dc.SetBrush( *wxTRANSPARENT_BRUSH );
303 for (int i = 0; i < h; i += 3) dc.DrawLine( 0, i, w, i );
304
305 dialog = new wxMessageDialog( this, "Now, the stripes will disappear.", "wxGTK" );
306 dialog->ShowModal();
307 delete dialog;
308
309 dc.EndDrawingOnTop();
310};
311
312//-----------------------------------------------------------------------------
313// MyCanvas
314//-----------------------------------------------------------------------------
315
316IMPLEMENT_DYNAMIC_CLASS(MyCanvas, wxScrolledWindow)
317
318BEGIN_EVENT_TABLE(MyCanvas,wxScrolledWindow)
319 EVT_BUTTON (100, MyDialog::OnReturnButton)
320 EVT_PAINT (MyCanvas::OnPaint)
321END_EVENT_TABLE()
322
323MyCanvas::MyCanvas( wxWindow *parent, const wxWindowID id, const wxPoint &pos, const wxSize &size )
324 : wxScrolledWindow( parent, id, pos, size, wxSUNKEN_BORDER )
325{
326 my_bitmap = new wxBitmap( folder_xpm );
327 my_horse = new wxBitmap();
328 my_horse->LoadFile( "horse.png", 0 );
329 my_backstore = new wxBitmap( 150, 150 );
330 my_font = new wxFont( 20, wxROMAN, wxNORMAL, wxNORMAL );
331 m_isCreated = FALSE;
332
333 SetBackgroundColour( wxColour("Wheat") );
334};
335
336MyCanvas::~MyCanvas(void)
337{
338 delete my_bitmap;
339 delete my_backstore;
340 delete my_horse;
341 delete my_font;
342};
343
344void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
345{
346 wxPaintDC dc( this );
347 PrepareDC( dc );
348
349 wxMemoryDC memDC;
350 memDC.SelectObject( *my_backstore );
0180d5da 351 memDC.Clear();
c801d85f
KB
352 memDC.SetBrush( *wxBLACK_BRUSH );
353 memDC.SetPen( *wxWHITE_PEN );
354 memDC.DrawRectangle( 0, 0, 150, 150 );
355 memDC.SetTextForeground( *wxWHITE );
356 memDC.DrawText( "This is a memory dc.", 10, 10 );
357
358 int vx = 0;
359 int vy = 0;
360 GetVirtualSize( &vx, &vy );
361 dc.DrawLine( 5, 5, vx-10, vy-10 );
362 dc.DrawLine( 10, 20, 100, 10 );
363 dc.DrawLine( 10, 20, 100, 50 );
364 dc.DrawLine( 10, 20, 100, 100 );
365
366 dc.SetPen( *wxWHITE_PEN );
367 dc.DrawLine( 80, 50, 180, 50 );
368
369 dc.SetFont( *my_font );
370
371 long x = 0;
372 long y = 0;
373 dc.GetTextExtent( "Hej, ho, hej, ho.", &x, &y );
374
375 dc.SetBrush( *wxTRANSPARENT_BRUSH );
376 dc.DrawRectangle( 80, 40, x, y );
377
378 dc.SetTextForeground( *wxGREEN );
379 dc.DrawText( "Hej, ho, hej, ho.", 80, 40 );
380
381 dc.SetTextForeground( *wxBLACK );
382 dc.SetFont( *wxNORMAL_FONT );
383 dc.DrawText( "Hej, ho, hej, ho. (NormalFont)", 80, 60 );
384 dc.SetFont( *wxSMALL_FONT );
385 dc.DrawText( "Hej, ho, hej, ho. (SmallFont)", 80, 80 );
386 dc.SetFont( *wxITALIC_FONT );
387 dc.DrawText( "Hej, ho, hej, ho. (ItalicFont)", 80, 100 );
388
389 dc.DrawBitmap( *my_bitmap, 30, 80, TRUE );
390 dc.DrawBitmap( *my_horse, 30, 120 );
391
392 dc.Blit( 200, 200, 150, 150, &memDC, 0, 0, 0 );
393
394 memDC.SelectObject( wxNullBitmap );
395
396/*
397 dc.SetBrush( *wxBLACK_BRUSH );
398 dc.DrawRectangle( 50, 50, 50, 50 );
399 dc.SetPen( *wxWHITE_PEN );
400 dc.DrawRectangle( 101, 50, 50, 50 );
401 dc.DrawRectangle( 50, 101, 50, 50 );
402
403 dc.SetBrush( *wxWHITE_BRUSH );
404
405 dc.SetPen( *wxWHITE_PEN );
406 dc.DrawRectangle( 70, 70, 2, 2 );
407
408 dc.SetPen( *wxRED_PEN );
409 dc.DrawRectangle( 72, 70, 2, 2 );
410 dc.DrawRectangle( 70, 72, 2, 2 );
411
412
413 dc.SetPen( *wxRED_PEN );
414 dc.DrawRectangle( 82, 80, 2, 2 );
415 dc.DrawRectangle( 80, 82, 2, 2 );
416
417 dc.SetPen( *wxWHITE_PEN );
418 dc.DrawRectangle( 80, 80, 2, 2 );
419*/
420};
421
422//-----------------------------------------------------------------------------
423// MyFrame
424//-----------------------------------------------------------------------------
425
426const ID_OPEN = 101;
427const ID_SAVE = 102;
428const ID_MSG = 103;
429const ID_FONT = 104;
430const ID_DLG = 105;
431const ID_QUIT = 108;
432const ID_ABOUT = 109;
433
434IMPLEMENT_DYNAMIC_CLASS( MyFrame, wxFrame )
435
436BEGIN_EVENT_TABLE(MyFrame,wxFrame)
437 EVT_SIZE (MyFrame::OnSize)
438 EVT_MENU (ID_OPEN, MyFrame::OnOpenDialog)
439 EVT_MENU (ID_FONT, MyFrame::OnFontDialog)
440 EVT_MENU (ID_MSG, MyFrame::OnMsg)
441 EVT_MENU (ID_DLG, MyFrame::OnDialog)
442 EVT_MENU (ID_ABOUT, MyFrame::OnAbout)
443 EVT_MENU (ID_QUIT, MyFrame::OnQuit)
444END_EVENT_TABLE()
445
446MyFrame::MyFrame(void) :
447 wxFrame( NULL, -1, "Robert's Test application", wxPoint(20,20), wxSize(470,360) )
448{
449 wxMenu *file_menu = new wxMenu( "Test" );
450 file_menu->Append( ID_OPEN, "Open..");
451 file_menu->Append( ID_MSG, "MessageBox..");
452 file_menu->Append( ID_FONT, "FontDialog..");
453 file_menu->AppendSeparator();
454 file_menu->Append( ID_DLG, "TestDialog..");
455 file_menu->AppendSeparator();
456 file_menu->Append( ID_ABOUT, "About..");
457 file_menu->Append( ID_QUIT, "Exit");
458
459 wxMenuBar *menu_bar = new wxMenuBar();
460 menu_bar->Append(file_menu, "File");
461 menu_bar->Show( TRUE );
462
463 SetMenuBar( menu_bar );
464
465 CreateStatusBar( 2 );
466
467 SetStatusText( "wxGTK v0.12", 0 );
468 SetStatusText( "Copyright 1998 Robert Roebling.", 1 );
469
470 m_canvas = new MyCanvas( this, -1, wxPoint(2,62), wxSize(300-4,120-4) );
471 m_canvas->SetScrollbars( 10, 10, 50, 50 );
472
46dc76ba 473 m_tb = CreateToolBar();
c801d85f 474 m_tb->SetMargins( 2, 2 );
46dc76ba
RR
475 m_tb->AddTool( 0, wxBitmap( list_xpm ), wxNullBitmap, FALSE, -1, -1, NULL, "This is a button" );
476 m_tb->AddTool( 0, wxBitmap( folder_xpm ), wxNullBitmap, TRUE, -1, -1, NULL, "This is a toggle" );
c801d85f 477 m_tb->Layout();
c801d85f
KB
478
479// m_timer.Start( 1000, TRUE );
480};
481
482void MyFrame::OnSize( wxSizeEvent &WXUNUSED(event) )
483{
484 int x = 0;
485 int y = 0;
486 GetClientSize( &x, &y );
487
488 m_tb->SetSize( 1, 0, x-2, 42 );
489 m_canvas-> SetSize( 0, 42, x, y-42 );
490};
491
492void MyFrame::OnDialog( wxCommandEvent &WXUNUSED(event) )
493{
1a6944fd
RR
494 MyDialog *dialog = new MyDialog( this );
495 dialog->ShowModal();
496 dialog->Close( TRUE );
c801d85f
KB
497};
498
499void MyFrame::OnFontDialog( wxCommandEvent &WXUNUSED(event) )
500{
501 wxFontData data;
502 data.SetInitialFont( wxSMALL_FONT );
503 data.SetColour( wxRED );
504 wxGenericFontDialog dialog( this, &data );
505 if (dialog.ShowModal() == wxID_OK)
506 {
507 wxFontData retData = dialog.GetFontData();
508 // do something
509 };
510};
511
512void MyFrame::OnOpenDialog( wxCommandEvent &WXUNUSED(event) )
513{
514 wxFileDialog dialog(this, "Testing open file dialog", "", "", "*.txt", 0);
515 if (dialog.ShowModal() == wxID_OK)
516 {
517 wxMessageDialog dialog2(this, dialog.GetPath(), "Selected path");
518 dialog2.ShowModal();
519 };
520};
521
522void MyFrame::OnMsg( wxCommandEvent &WXUNUSED(event) )
523{
524 wxMessageBox( "There once was a lady from Riga.", "TestBox.", wxYES_NO );
525};
526
527void MyFrame::OnQuit( wxCommandEvent &WXUNUSED(event) )
528{
529 Close( TRUE );
530};
531
532void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) )
533{
534 wxDialog dialog( this, -1, "About wxGTK", wxPoint(100,100), wxSize(540,350), wxDIALOG_MODAL );
535
536 int w = 0;
537 int h = 0;
538 dialog.GetSize( &w, &h );
539
540 int x = 30;
541 int y = 20;
542 int step = 20;
543
544 (void)new wxStaticBox( &dialog, -1, (const char*)NULL, wxPoint(10,10), wxSize(w-20,h-80) );
545
546 (void)new wxStaticText( &dialog, -1, "wxGTK v0.12", wxPoint(240,y) );
547 y += 2*step-10;
548
549 (void)new wxStaticText( &dialog, -1, "Written by Robert Roebling, 1998. More information at:", wxPoint(x,y) );
550 y += step;
551 (void)new wxStaticText( &dialog, -1, "http://www.freiburg.linux.de/~wxxt", wxPoint(x+50,y) );
552 y += 2*step;
553
554 (void)new wxStaticText( &dialog, -1,
555 "wxGTK is based on the wxWindows GUI-library written mainly by Julian Smart. See:", wxPoint(x,y) );
556 y += step;
557 (void)new wxStaticText( &dialog, -1, "http://web.ukonline.co.uk/julian.smart/wxwin", wxPoint(x+50,y) );
558 y += 2*step;
559
560 (void)new wxStaticText( &dialog, -1, "wxWindows Copyright: Less restrictive version of LGPL.", wxPoint(x,y) );
561 y += 2*step;
562 (void)new wxStaticText( &dialog, -1, "For questions concerning wxGTK, you may mail to:", wxPoint(x,y) );
563 y += step;
564 (void)new wxStaticText( &dialog, -1, "roebling@ruf.uni-freiburg.de", wxPoint(x+50,y) );
565
566 (void) new wxButton( &dialog, wxID_OK, "Return", wxPoint(w/2-40,h-50), wxSize(80,30) );
567
568 dialog.ShowModal();
569};
570
571//-----------------------------------------------------------------------------
572// MyApp
573//-----------------------------------------------------------------------------
574
575MyApp::MyApp(void) :
576 wxApp( )
577{
578};
579
580bool MyApp::OnInit(void)
581{
582 wxFrame *frame = new MyFrame();
583 frame->Show( TRUE );
584
585 return TRUE;
586};
587
588
589
590
591