CEdit maximale Länge kontrollieren? (in Zeichen kann es anzeigen)

8

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.

    
rec 07.10.2008, 23:40
quelle

3 Antworten

13

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.

    
rec 08.10.2008, 19:35
quelle
5

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 ...

    
ryan_s 08.10.2008 04:30
quelle
2

"(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.

    
Windows programmer 08.10.2008 04:48
quelle

Tags und Links