+ virtual void DoSetValue(const wxString &value, int flags = 0);
+
+ // return true if this control has a user-set limit on amount of text (i.e.
+ // the limit is due to a previous call to SetMaxLength() and not built in)
+ bool HasSpaceLimit(unsigned int *len) const;
+
+ // call this to increase the size limit (will do nothing if the current
+ // limit is big enough)
+ //
+ // returns true if we increased the limit to allow entering more text,
+ // false if we hit the limit set by SetMaxLength() and so didn't change it
+ bool AdjustSpaceLimit();
+
+#if wxUSE_RICHEDIT && (!wxUSE_UNICODE || wxUSE_UNICODE_MSLU)
+ // replace the selection or the entire control contents with the given text
+ // in the specified encoding
+ bool StreamIn(const wxString& value, wxFontEncoding encoding, bool selOnly);
+
+ // get the contents of the control out as text in the given encoding
+ wxString StreamOut(wxFontEncoding encoding, bool selOnly = false) const;
+#endif // wxUSE_RICHEDIT
+
+ // replace the contents of the selection or of the entire control with the
+ // given text
+ void DoWriteText(const wxString& text,
+ int flags = SetValue_SendEvent | SetValue_SelectionOnly);
+
+ // set the selection (possibly without scrolling the caret into view)
+ void DoSetSelection(long from, long to, int flags);
+
+ // get the length of the line containing the character at the given
+ // position
+ long GetLengthOfLineContainingPos(long pos) const;
+
+ // send TEXT_UPDATED event, return true if it was handled, false otherwise
+ bool SendUpdateEvent();
+
+ virtual wxSize DoGetBestSize() const;
+
+#if wxUSE_RICHEDIT
+ // we're using RICHEDIT (and not simple EDIT) control if this field is not
+ // 0, it also gives the version of the RICHEDIT control being used (1, 2 or
+ // 3 so far)
+ int m_verRichEdit;
+#endif // wxUSE_RICHEDIT
+
+ // number of EN_UPDATE events sent by Windows when we change the controls
+ // text ourselves: we want this to be exactly 1
+ int m_updatesCount;