Alocar um Buffer de texto

Quando o sistema cria um controle editar, ele automaticamente cria um buffer de texto, define seu tamanho inicial e aumenta o tamanho conforme necessário. O tamanho pode ser um limite predefinido de aproximadamente 32 kilobytes para controles editar single-line. Porque pode alterar este limite, ele é chamado um limite suave. Um aplicativo pode definir um limite de disco rígido para o tamanho do buffer enviando uma mensagem EM_SETLIMITTEXT para o controle editar. Se o buffer exceder o limite, o sistema envia uma mensagem EN_ERRSPACE o aplicativo. Um aplicativo pode recuperar o atual limite de texto enviando uma mensagem EM_GETLIMITTEXT.

O sistema normalmente cria um buffer de controle de editar em uma caixa de diálogo usando a memória fora do segmento de dados do aplicativo. Um aplicativo pode suprimir esse comportamento de alocação padrão e criar a reserva de sua pilha local usando o estilo DS_LOCALEDIT ao criar o Controlarar de editar. Um aplicativo que usa o estilo DS_LOCALEDIT é responsável por todas as alocações de buffer. Para fazer a alocação inicial, um aplicativo pode chamar o LocalAlloc função e passe o buffer retornado identificador para o controle editar enviando uma mensagem EM_SETHANDLE . Para fazer alocações subseqüentes (em resposta a uma mensagem EN_ERRSPACE, por exemplo), um aplicativo deve salvar o conteúdo atual do buffer (se necessário) e obter um novo buffer como segue

  1. Recuperar o identificador da memória atualmente alocada para o texto em uma detalhada controle de edição enviando o controle uma mensagem EM_GETHANDLE.
  2. Liberar o buffer chamando o LocalFree função.
  3. Obter um novo buffer (e identificador de reserva), chamando LocalAlloc.
  4. Dar o identificador de reserva para o sistema enviando o controle uma mensagem EM_SETHANDLE.

As mensagens EM_SETHANDLE e EM_GETHANDLE se aplica somente a controles de Editar de várias linhas.

Um aplicativo que usa o comportamento de alocação padrão (ou seja, não usa o estilo DS_LOCALEDIT) não deve enviar mensagens EM_SETHANDLE e EM_GETHANDLE para o Controlarar de editar.

Enviar uma mensagem de EM_SETHANDLE tem vários efeitos colaterais: limpa o Sinalizar de desfazer (fazendo a mensagem EM_CANUNDO retornar zero), ele limpa o Sinalizar de modificar (fazer a mensagem EM_GETMODIFY retornar zero) e redesenha a janela Editar controle.

Index