]> git.saurik.com Git - wxWidgets.git/blame - samples/scroll/scroll.cpp
fixed the rule for the DLL so it doesn't build the .lib file twice
[wxWidgets.git] / samples / scroll / scroll.cpp
CommitLineData
fdd3ed7a
RR
1/*
2 * Program: scroll
3 *
4 * Author: Robert Roebling
5 *
6 * Copyright: (C) 1998, Robert Roebling
7 *
8 */
9
10// For compilers that support precompilation, includes "wx/wx.h".
11#include "wx/wxprec.h"
12
13#ifdef __BORLANDC__
14#pragma hdrstop
15#endif
16
17#ifndef WX_PRECOMP
18#include "wx/wx.h"
19#endif
20
21#include "wx/image.h"
053f9cc1 22#include "wx/listctrl.h"
fdd3ed7a
RR
23
24// derived classes
25
26class MyFrame;
27class MyApp;
28
29// MyCanvas
30
31class MyCanvas: public wxScrolledWindow
32{
33public:
34 MyCanvas() {};
35 MyCanvas( wxWindow *parent, wxWindowID, const wxPoint &pos, const wxSize &size );
36 ~MyCanvas();
37 void OnPaint( wxPaintEvent &event );
38
39 DECLARE_DYNAMIC_CLASS(MyCanvas)
40 DECLARE_EVENT_TABLE()
41};
42
43// MyFrame
44
45class MyFrame: public wxFrame
46{
47public:
48 MyFrame();
49
50 void OnAbout( wxCommandEvent &event );
51 void OnQuit( wxCommandEvent &event );
52
53 MyCanvas *m_canvas;
54
55 DECLARE_DYNAMIC_CLASS(MyFrame)
56 DECLARE_EVENT_TABLE()
57};
58
59// MyApp
60
61class MyApp: public wxApp
62{
63public:
64 virtual bool OnInit();
65};
66
67// main program
68
69IMPLEMENT_APP(MyApp)
70
71// MyCanvas
72
73IMPLEMENT_DYNAMIC_CLASS(MyCanvas, wxScrolledWindow)
74
75BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow)
76 EVT_PAINT(MyCanvas::OnPaint)
77END_EVENT_TABLE()
78
79MyCanvas::MyCanvas( wxWindow *parent, wxWindowID id,
80 const wxPoint &pos, const wxSize &size )
de1c750f 81 : wxScrolledWindow( parent, id, pos, size, wxSUNKEN_BORDER | wxTAB_TRAVERSAL )
fdd3ed7a 82{
fdd3ed7a
RR
83 wxString choices[] =
84 {
85 "This",
86 "is one of my",
87 "really",
88 "wonderful",
89 "examples."
90 };
91
eba0e4d4 92 (void) new wxButton( this, -1, "wxButton", wxPoint(10,10) );
eb082a08 93
eba0e4d4 94 (void) new wxTextCtrl( this, -1, "wxTextCtrl", wxPoint(10,50) );
eb082a08
RR
95
96 (void) new wxRadioButton( this, -1, "Disable", wxPoint(10,90) );
97
eba0e4d4 98 (void) new wxComboBox( this, -1, "This", wxPoint(10,130), wxDefaultSize, 5, choices );
fdd3ed7a 99
7f7d9505 100 (void) new wxRadioBox( this, -1, "This", wxPoint(10,200), wxDefaultSize, 5, choices, 2, wxRA_SPECIFY_COLS );
053f9cc1 101
e9158f7d
RR
102 (void) new wxRadioBox( this, -1, "This", wxPoint(10,300), wxDefaultSize, 5, choices, 2, wxRA_SPECIFY_ROWS );
103
053f9cc1
RR
104 wxListCtrl *m_listCtrl = new wxListCtrl(
105 this, -1, wxPoint(200, 10), wxSize(180, 120),
00a39542 106 wxLC_REPORT | wxSUNKEN_BORDER | wxLC_SINGLE_SEL );
053f9cc1
RR
107
108 m_listCtrl->InsertColumn(0, "First", wxLIST_FORMAT_LEFT, 90);
109 m_listCtrl->InsertColumn(1, "Last", wxLIST_FORMAT_LEFT, 90);
110
111 for ( int i=0; i < 30; i++)
112 {
113 char buf[20];
114 sprintf(buf, "Item %d", i);
115 m_listCtrl->InsertItem(i, buf);
116 }
00a39542 117 m_listCtrl->SetItemState( 3, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED );
053f9cc1
RR
118
119 (void) new wxListBox( this, -1, wxPoint(200,180), wxSize(180,120), 5, choices, wxLB_ALWAYS_SB );
eb082a08 120
053f9cc1 121 SetBackgroundColour( "WHEAT" );
fdd3ed7a
RR
122}
123
124MyCanvas::~MyCanvas()
125{
126}
127
128void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
129{
130 wxPaintDC dc( this );
131 PrepareDC( dc );
132
7f539e8a 133 dc.DrawText( "Some text", 110, 10 );
fdd3ed7a
RR
134
135 dc.DrawRectangle( 50, 30, 200, 200 );
136}
137
138// MyFrame
139
140const int ID_QUIT = 108;
141const int ID_ABOUT = 109;
142
143IMPLEMENT_DYNAMIC_CLASS( MyFrame, wxFrame )
144
145BEGIN_EVENT_TABLE(MyFrame,wxFrame)
146 EVT_MENU (ID_ABOUT, MyFrame::OnAbout)
147 EVT_MENU (ID_QUIT, MyFrame::OnQuit)
148END_EVENT_TABLE()
149
150MyFrame::MyFrame()
151 : wxFrame( (wxFrame *)NULL, -1, "wxScrolledWindow sample",
152 wxPoint(20,20), wxSize(470,360) )
153{
154 wxMenu *file_menu = new wxMenu();
155 file_menu->Append( ID_ABOUT, "&About..");
156 file_menu->Append( ID_QUIT, "E&xit\tAlt-X");
157
158 wxMenuBar *menu_bar = new wxMenuBar();
159 menu_bar->Append(file_menu, "&File");
160
161 SetMenuBar( menu_bar );
162
163 CreateStatusBar(2);
164 int widths[] = { -1, 100 };
165 SetStatusWidths( 2, widths );
166
167 m_canvas = new MyCanvas( this, -1, wxPoint(0,0), wxSize(10,10) );
168 m_canvas->SetScrollbars( 10, 10, 50, 100 );
169}
170
171void MyFrame::OnQuit( wxCommandEvent &WXUNUSED(event) )
172{
173 Close( TRUE );
174}
175
176void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) )
177{
178 (void)wxMessageBox( "wxScroll demo\n"
179 "Robert Roebling (c) 1998",
180 "About wxScroll Demo", wxICON_INFORMATION | wxOK );
181}
182
183//-----------------------------------------------------------------------------
184// MyApp
185//-----------------------------------------------------------------------------
186
187bool MyApp::OnInit()
188{
189 wxFrame *frame = new MyFrame();
190 frame->Show( TRUE );
191
192 return TRUE;
193}
194