<p>What is the maximum length for the text string contained in a CEdit control in MFC? I get a beep when trying to add a character after the character 30001 is this documented anywhere? Can I display longer texts in a CEdit? Should I use another control?</p>

<p>As "Windows programmer" says down below, the text length limit is not the same when the user types as when we programatically set the text using SetWindowText. The limit for setting a text programatically is not mentioned anywhere. The default text lentgth limit for the user typing is wrong. (see my own post below). </p>

<p>I'm guessing that after I call pEdit->SetLimitText(0) the limit for both programatically and user input text length is 7FFFFFFE bytes. Am I right?</p>

<p>In vista, when pasting text longer than 40000 characters into a CEdit, it becomes unresponsive. It does not matter if I called SetLimitText(100000) previously.</p>

You can find out what the maximum is for your control by calling
CEdit::GetLimitText()
on your control.  This returns the maximum size for character data in bytes.  You can change the maximum size using the
CEdit::SetLimitText()
function.
The SetLimitText() function is equivalent to sending an
EM_SETLIMITTEXT
message.  The documentation for that message gives the maximum sizes that can be used, but since these are MSDN links that will probably be broken by tomorrow, I'll copy the relevant information :)
The UINT parameter is interpreted as:
The maximum number of TCHARs the user
  can enter. For ANSI text, this is the
  number of bytes; for Unicode text,
  this is the number of characters. This
  number does not include the
  terminating null character. Rich edit
  controls: If this parameter is zero,
  the text length is set to 64,000
  characters.
Edit controls on Windows NT/2000/XP:
  If this parameter is zero, the text
  length is set to 0x7FFFFFFE characters
  for single-line edit controls or –1
  for multiline edit controls.
Edit controls on Windows 95/98/Me: If
  this parameter is zero, the text
  length is set to 0x7FFE characters for
  single-line edit controls or 0xFFFF
  for multiline edit controls.
Also, from the Remarks section:
Before EM_SETLIMITTEXT is called, the
  default limit for the amount of text a
  user can enter in an edit control is
  32,767 characters.
Edit controls on Windows NT/2000/XP:
  For single-line edit controls, the
  text limit is either 0x7FFFFFFE bytes
  or the value of the wParam parameter,
  whichever is smaller. For multiline
  edit controls, this value is either –1
  bytes or the value of the wParam
  parameter, whichever is smaller.
Edit controls on Windows 95/98/Me: For
  single-line edit controls, the text
  limit is either 0x7FFE bytes or the
  value of the wParam parameter,
  whichever is smaller. For multiline
  edit controls, this value is either
  0xFFFF bytes or the value of the
  wParam parameter, whichever is
  smaller.
I assume they meant 0xFFFFFFFF instead of -1 in the second paragraph there...