Was ist die maximale Länge für die Textzeichenfolge, die in einem CEdit-Steuerelement in MFC enthalten ist? Ich bekomme einen Signalton, wenn ich versuche, einen Charakter hinzuzufügen, nachdem der Charakter 30001 irgendwo dokumentiert ist? Kann ich längere Texte in einem CEdit anzeigen? Sollte ich ein anderes Steuerelement verwenden?
Wie "Windows-Programmierer" unten sagt, ist das Textlängenlimit nicht gleich, wenn der Benutzer schreibt, wenn wir den Text mit SetWindowText programmatisch setzen. Das Limit für das programmatische Einstellen eines Textes wird nirgendwo erwähnt. Das Standardlimit für Textbeschränkungen für den Benutzer ist falsch. (siehe meinen eigenen Beitrag unten).
Ich rate, dass, nachdem ich pEdit- & gt; SetLimitText (0) aufgerufen habe, die Grenze sowohl für die programmatische als auch die Benutzereingabetextlänge 7FFFFFFE Bytes ist. Habe ich Recht?
Wenn Sie Text länger als 40000 Zeichen in ein CEdit einfügen, reagiert es nicht mehr. Es spielt keine Rolle, ob ich zuvor SetLimitText (100000) aufgerufen habe.
Ich fand die Dokumentation falsch, wenn die Standardgröße für ein einzelnes CEdit-Steuerelement in Vista erwähnt wird.
Ich habe diesen Code ausgeführt:
%Vor%In der Dokumentation steht:
Bevor EM_SETLIMITTEXT aufgerufen wird, Standardlimit für die Textmenge a Benutzer kann in einem Bearbeitungssteuerelement eingeben 32.767 Zeichen.
was offensichtlich falsch ist.
Sie können herausfinden, was das Maximum für Ihre Kontrolle ist, indem Sie CEdit :: GetLimitText () auf Ihrem Steuerelement. Dies gibt die maximale Größe für Zeichendaten in Bytes zurück. Sie können die maximale Größe mit der Funktion CEdit :: SetLimitText () ändern .
Die Funktion SetLimitText () entspricht dem Senden einer Nachricht EM_SETLIMITTEXT . Die Dokumentation für diese Nachricht gibt die maximalen Größen, die verwendet werden können, aber da dies MSDN-Verknüpfungen sind, die wahrscheinlich bis morgen unterbrochen werden, kopiere ich die relevanten Informationen:)
Der UINT-Parameter wird interpretiert als:
Die maximale Anzahl von TCHARs für den Benutzer kann betreten. Für ANSI-Text ist dies der Anzahl der Bytes; für Unicode-Text, Dies ist die Anzahl der Zeichen. Dies Nummer beinhaltet nicht die Nullzeichen beenden. Reiche Bearbeitung Kontrollen: Wenn dieser Parameter Null ist, Die Textlänge ist auf 64.000 festgelegt Zeichen.
Steuerelemente unter Windows NT / 2000 / XP bearbeiten: Wenn dieser Parameter Null ist, der Text Länge ist auf 0x7FFFFFFE Zeichen gesetzt für einzeilige Bearbeitungssteuerelemente oder -1 für mehrzeilige Bearbeitungssteuerelemente.
Steuerelemente bearbeiten unter Windows 95/98 / Me: If Dieser Parameter ist Null, der Text length ist auf 0x7FFE Zeichen für gesetzt einzeilige Bearbeitungssteuerelemente oder 0xFFFF für mehrzeilige Bearbeitungssteuerelemente.
Auch im Abschnitt "Bemerkungen":
Bevor EM_SETLIMITTEXT aufgerufen wird, Standardlimit für die Textmenge a Benutzer kann in einem Bearbeitungssteuerelement eingeben 32.767 Zeichen.
Steuerelemente unter Windows NT / 2000 / XP bearbeiten: Für einzeilige Bearbeitungssteuerelemente wird das Textlimit ist entweder 0x7FFFFFFE Bytes oder der Wert des Parameters wParam, je nachdem, welcher kleiner ist. Für mehrzeilig Bearbeiten Sie die Steuerelemente, dieser Wert ist entweder -1 Bytes oder der Wert von wParam Parameter, je nachdem, welcher Wert kleiner ist.
Bearbeitungssteuerelemente unter Windows 95/98 / Me: Für einzeilige Bearbeitungssteuerelemente, der Text Limit ist entweder 0x7FFE Bytes oder die Wert des wParam-Parameters, je nachdem, welcher kleiner ist. Für mehrzeilig Steuerelemente bearbeiten, ist dieser Wert entweder 0xFFFF Bytes oder der Wert der wParam-Parameter, je nachdem, was ist kleiner.
Ich nehme an, dass sie 0xFFFFFFFF statt -1 im zweiten Absatz dort gemeint haben ...
"(in Zeichen, die es anzeigen kann)"!="beim Versuch, ein Zeichen hinzuzufügen".
"beim Versuch, ein Zeichen hinzuzufügen" == "Die maximale Anzahl von TCHARs, die der Benutzer eingeben kann" es sei denn, Sie meinen, dass Sie programmtechnisch versuchen, ein Zeichen hinzuzufügen.
"0x7FFFFFFE Zeichen"!="0x7FFFFFFE Bytes" außer manchmal, eine Tatsache, die der zitierte MSDN-Text manchmal versteht.
Ich wette, niemand kennt die Antwort auf die ursprüngliche Frage. Aber "0x7FFFFFFE Bytes" ist wahrscheinlich eine von vielen Grenzen.