+ 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
+ // Apply the character-related parts of wxTextAttr to the given selection
+ // or the entire control if start == end == -1.
+ //
+ // This function is private and should only be called for rich edit
+ // controls and with (from, to) already in correct order, i.e. from <= to.
+ bool MSWSetCharFormat(const wxTextAttr& attr, long from = -1, long to = -1);
+
+ // Same as above for paragraph-related parts of wxTextAttr. Note that this
+ // can only be applied to the selection as RichEdit doesn't support setting
+ // the paragraph styles globally.
+ bool MSWSetParaFormat(const wxTextAttr& attr, long from, long to);
+
+
+ // 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
+ // (although not directly: 1 is for 1.0, 2 is for either 2.0 or 3.0 as we
+ // can't nor really need to distinguish between them and 4 is for 4.1)
+ 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;