Ved tildeling av tekstbuffer for en

Når programmet oppretter en redigeringskontroll, det automatisk oppretter en tekstbuffer, angir den opprinnelige størrelsen, og øker i størrelse etter behov. Størrelsen kan være opp til en forhåndsdefinert grense på omtrent 32 kB for redigeringskontroller med én linje. Fordi du kan endre denne grensen, kalles det en myk grense. Et program kan sette en grense til bufferstørrelsen ved å sende en EM_SETLIMITTEXT melding til edit-kontrollen. Hvis bufferen overskrider enten grensen, sender systemet programmet en EN_ERRSPACE -melding. Et program kan hente den gjeldende grensen på tekst ved å sende en EM_GETLIMITTEXT melding.

Systemet oppretter vanligvis en buffer på Rediger-kontroll i en dialogboks, og bruker minne utenfor programmets datasegment. Et program kan undertrykke denne standardvirkemåten for en tildeling og opprette bufferen fra heapen lokale ved hjelp av DS_LOCALEDIT-stil når du oppretter redigeringskontrollen. Et program som bruker stilen DS_LOCALEDIT er ansvarlig for alle tildelinger i bufferen. For å gjøre første tildelingen, kan et program kaller den LocalAlloc funksjonen og admission card den returnerte bufferen håndtere til redigeringskontrollen ved å sende den EM_SETHANDLE post. Vil gjøre etterfølgende tildelinger (som svar på en melding med EN_ERRSPACE, for eksempel), skal et program lagre gjeldende bufferinnholdet (om nødvendig) og få en ny buffer som følger

  1. Hente håndtaket minne som er allokert for teksten i en multiline edit-kontrollen ved å sende kontrollen EM_GETHANDLE post.
  2. Gratis bufferen ved å kalle den LocalFree funksjon.
  3. Få tak i en ny buffer (og buffer håndtak) ved å kalle LocalAlloc.
  4. Gi bufferen håndtaket til systemet ved å sende kontrollen EM_SETHANDLE post.

Den EM_SETHANDLE og EM_GETHANDLE meldingen gjelder bare for redigeringskontroller for flere linjer.

Et program som bruker standardvirkemåten for tildeling (det vil si ikke bruker stilen DS_LOCALEDIT) må ikke sende meldinger for EM_SETHANDLE og EM_GETHANDLE til redigeringskontrollen.

Sende en EM_SETHANDLE melding har flere bivirkninger: den tømmer Angre flagget (gjør meldingen EM_CANUNDO returnere null), den klarner endre flagget (gjør meldingen EM_GETMODIFY returnere null), og Rediger kontrollvinduet tegner på nytt.

Index