+//----------------------------------------------------------------------
+// MyTextCtrl
+//----------------------------------------------------------------------
+
+BEGIN_EVENT_TABLE(MyTextCtrl, wxTextCtrl)
+ EVT_CHAR(MyTextCtrl::OnChar)
+END_EVENT_TABLE()
+
+void MyTextCtrl::OnChar(wxKeyEvent& event)
+{
+ switch ( event.KeyCode() )
+ {
+ case WXK_F1:
+ // show current position and text length
+ {
+ long line, column, pos = GetInsertionPoint();
+ PositionToXY(pos, &column, &line);
+
+ wxLogMessage("Current position: %ld\n"
+ "Current line, column: (%ld, %ld)\n"
+ "Number of lines: %ld\n"
+ "Current line length: %ld\n"
+ "Total text length: %ld",
+ pos,
+ line, column,
+ GetNumberOfLines(),
+ GetLineLength(line),
+ GetLastPosition());
+ }
+ break;
+
+ case WXK_F2:
+ // go to the end
+ SetInsertionPointEnd();
+ break;
+
+ case WXK_F3:
+ // go to position 10
+ SetInsertionPoint(10);
+ break;
+
+ default:
+ event.Skip();
+ }
+}
+