Toewijzing van een tekst Buffer

Als het systeem een edit-besturingselement creŽert, het automatisch gemaakt een tekst buffer, Hiermee stelt u de begingrootte en verhoogt de grootte als nodig. De grootte kan worden tot een vooraf gedefinieerde maximum van ongeveer 32 KB voor besturingselementen voor ťťn regel bewerken. Omdat deze limiet wijzigen kan, is het heet een zachte limiet. Een toepassing kan een harde limiet ingesteld op de buffergrootte door een EM_SETLIMITTEXT -bericht te sturen naar het besturingselement voor bewerking. Als de buffer ofwel limiet overschrijdt, stuurt het systeem de toepassing een EN_ERRSPACE -bericht. Een toepassing kan de huidige tekst limiet ophalen door een EM_GETLIMITTEXT -bericht te sturen.

Het systeem creŽert meestal een buffer controle bewerken in een dialoogvenster, met behulp van geheugen buiten de toepassing van de gegevenssegment. Een toepassing kan dit standaardgedrag toewijzing onderdrukken en de buffer vanuit haar lokale opslagruimte maken met behulp van de DS_LOCALEDIT stijl bij het maken van het besturingselement voor bewerking. Een toepassing die gebruikmaakt van de DS_LOCALEDIT stijl is verantwoordelijk voor alle toewijzingen van de buffer. Om de eerste toewijzing, een toepassing kan bellen de LocalAlloc functie en pas de geretourneerde buffer ingang naar het besturingselement bewerken door het een EM_SETHANDLE -bericht te verzenden. Om latere toewijzingen (in antwoord op een EN_ERRSPACE-bericht, bijvoorbeeld), moet een toepassing opslaan van de huidige inhoud van de buffer (indien nodig) en een nieuwe buffer als volgt verkrijgen

  1. De greep van het geheugen die momenteel zijn toegewezen voor de tekst in een besturingselement meerdere regels bewerken via het besturingselement een EM_GETHANDLE -mailbericht ophalen.
  2. De buffer gratis door te bellen naar de LocalFree -functie.
  3. Verkrijgen van een nieuwe buffer (en buffer handvat) door te bellen LocalAlloc.
  4. De buffer greep geven aan het systeem via het besturingselement een EM_SETHANDLE -bericht.

De EM_SETHANDLE en EM_GETHANDLE berichten gelden alleen voor besturingselementen met meerdere regels bewerken.

Een toepassing die gebruikmaakt van de standaardwerking van de toewijzing (dat wil zeggen, gebruikt niet de stijl DS_LOCALEDIT) moet niet EM_SETHANDLE en EM_GETHANDLE berichten verzenden naar het besturingselement bewerken.

Een EM_SETHANDLE signaal heeft verschillende bijwerkingen: schoont de vlag ongedaan maken (waardoor het bericht EM_CANUNDO nul terug), schoont de vlag wijzigen (waardoor het EM_GETMODIFY bericht terug nul) en het hertekent de venster Controle bewerken.

Index