Przydzielania buforu tekstu

Gdy system tworzy formant edycyjny, to automatycznie tworzy bufor tekstowy, ustawia rozmiar początkowy i zwiększa rozmiar w razie potrzeby. Rozmiar może być wstępnie zdefiniowanego limitu około 32 kilobajty dla pojedynczej linii edycyjnym. Ponieważ limit ten może się zmieniać, jest nazywany miękki limit. Aplikację można ustawić twardym limitem rozmiaru buforu wysyłając wiadomość EM_SETLIMITTEXT do formantu edycyjnego. Jeśli bufor przekracza albo limit, system wysyła wniosek komunikat EN_ERRSPACE . Aplikacja może pobrać obecny limit tekst wysyłając wiadomość EM_GETLIMITTEXT.

Zazwyczaj system tworzy buforu formantu edycja w oknie dialogowym, przy użyciu pamięci poza segmentów danych aplikacji. Aplikację można pominąć to domyślne zachowanie alokacji i utworzyć bufor ze sterty lokalnego przy użyciu stylu DS_LOCALEDIT, tworząc formant edycji. Aplikacja, która używa stylu DS_LOCALEDIT jest odpowiedzialny za wszystkie alokacji buforów. Aby Wstępna alokacja, aplikacja może wywołać funkcji Funkcja LocalAlloc i przebiegu buforu zwrócony dojście do formantu edycyjnego przesyłając komunikat EM_SETHANDLE . Aby kolejne alokacje (w odpowiedzi na wiadomość EN_ERRSPACE, na przykład), aplikacji należy zapisać bieżącą zawartość buforu (w razie potrzeby) i uzyskać nowy buforu w następujący sposób

  1. Pobrać uchwytu pamięć aktualnie przydzielona dla tekstu w formancie Edycja wielowierszowa wysyłając kontroli wiadomość EM_GETHANDLE.
  2. Zwolnić buforu przez wywołanie funkcji LocalFree funkcji.
  3. Uzyskać nowy buforu (i uchwyt buforu), wywołując Funkcja LocalAlloc.
  4. Nadaj uchwyt buforu do systemu przez wysłanie kontroli komunikat EM_SETHANDLE.

EM_SETHANDLE i EM_GETHANDLE wiadomości stosuje się tylko do wielowierszowych formantów edycyjnych.

Aplikacja, która używa domyślnego zachowania przydziału (oznacza to, że nie używać stylu DS_LOCALEDIT) nie musi wysłać wiadomości EM_SETHANDLE i EM_GETHANDLE do formantu edycyjnego.

Wysyłanie wiadomości EM_SETHANDLE ma kilka efektów ubocznych: czyści flagę Cofnij (tworzenie wiadomości EM_CANUNDO zwrócić zero), czyści flagę Modyfikuj (tworzenie wiadomości EM_GETMODIFY zwrócić zero) i odrysowania okna Edycja i kontroli.

Index