New code for char and key events under GTK 2.0. This
uses the built-in input method which is required
even for getting European characters. Key down
events probably don't work anymore. It is still
impossible to receive Unicode characters due to
the limitations of wxKeyEvent.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17579 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -73,9 +73,11 @@ public:
|
||||
MyCanvas( MyFrame *parent );
|
||||
|
||||
void OnPaint( wxPaintEvent &event );
|
||||
void OnChar( wxKeyEvent &event );
|
||||
void OnEraseBackground( wxEraseEvent &event );
|
||||
|
||||
wxBitmap m_bitmap;
|
||||
wxString m_text;
|
||||
|
||||
private:
|
||||
DECLARE_EVENT_TABLE()
|
||||
@@ -160,6 +162,7 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
|
||||
|
||||
BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow)
|
||||
EVT_PAINT( MyCanvas::OnPaint)
|
||||
EVT_CHAR( MyCanvas::OnChar)
|
||||
EVT_ERASE_BACKGROUND( MyCanvas::OnEraseBackground)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
@@ -176,6 +179,22 @@ MyCanvas::MyCanvas( MyFrame *parent )
|
||||
new wxStaticBitmap( this, -1, m_bitmap, wxPoint(80,20) );
|
||||
}
|
||||
|
||||
void MyCanvas::OnChar( wxKeyEvent &event )
|
||||
{
|
||||
// some test cases
|
||||
switch (event.m_keyCode)
|
||||
{
|
||||
case WXK_UP: m_text += wxT( "<UP>" ); break;
|
||||
case WXK_LEFT: m_text += wxT( "<LEFT>" ); break;
|
||||
case WXK_RIGHT: m_text += wxT( "<RIGHT>" ); break;
|
||||
case WXK_DOWN: m_text += wxT( "<DOWN>" ); break;
|
||||
case WXK_RETURN: m_text += wxT( "<ENTER>" ); break;
|
||||
default: m_text += event.m_keyCode; break;
|
||||
}
|
||||
|
||||
Refresh();
|
||||
}
|
||||
|
||||
void MyCanvas::OnPaint( wxPaintEvent &event )
|
||||
{
|
||||
wxPaintDC dc(this);
|
||||
@@ -188,6 +207,14 @@ void MyCanvas::OnPaint( wxPaintEvent &event )
|
||||
|
||||
dc.SetTextForeground(*wxBLUE);
|
||||
dc.DrawText(_T("This text is drawn from OnPaint"), 65, 65);
|
||||
|
||||
wxString tmp;
|
||||
tmp.Printf( _T("Hit any key to display more text: %s"), m_text.c_str() );
|
||||
int w,h;
|
||||
dc.GetTextExtent( tmp, &w, &h );
|
||||
dc.SetBrush( *wxWHITE_BRUSH );
|
||||
dc.DrawRectangle( 65, 85, w, h );
|
||||
dc.DrawText( tmp, 65, 85 );
|
||||
|
||||
#if 0
|
||||
wxRegionIterator upd( GetUpdateRegion() );
|
||||
|
||||
Reference in New Issue
Block a user