Share via


Informazioni sui controlli di modifica

Un controllo di modifica è una finestra di controllo rettangolare usata in genere in una finestra di dialogo per consentire all'utente di immettere e modificare il testo.

I controlli di modifica supportano sia il set di caratteri Unicode in cui i caratteri sono due byte, sia i set di caratteri ANSI in cui i caratteri sono un byte. Per altre informazioni sui set di caratteri Unicode e ANSI, vedere Unicode e Character Set.

I controlli di modifica avanzata supportano molte funzionalità non disponibili nei controlli di modifica del sistema. Per altre informazioni, vedere Controlli Rich Edit.

In questa panoramica vengono illustrati gli argomenti seguenti.

Modifica funzionalità di controllo

Quando è selezionata, un controllo di modifica visualizza un cursore lampeggiante che indica il punto di inserimento. L'utente può quindi immettere testo, spostare il punto di inserimento o selezionare il testo da modificare usando la tastiera o il mouse. Un controllo di modifica invia i codici di notifica alla finestra padre sotto forma di messaggi di WM_COMMAND . Per altre informazioni sui messaggi di un controllo di modifica, vedere Edit Control Notification Messages. Una finestra padre può inviare messaggi a un controllo di modifica in una finestra di dialogo chiamando la funzione SendDlgItemMessage. Alcuni messaggi possono anche essere inviati usando macro predefinite.

Il sistema fornisce sia controlli di modifica a riga singola che controlli di modifica su più righe. I controlli di modifica appartengono alla classe finestra EDIT.

Una casella combinata è un controllo che combina gran parte delle funzionalità di un controllo di modifica e di una casella di riepilogo. In una casella combinata, il controllo di modifica visualizza la selezione corrente e la casella di riepilogo presenta le opzioni che un utente può selezionare. Per altre informazioni sulle caselle combinate, vedere Caselle combinate.

Molti sviluppatori usano le finestre di dialogo fornite nella libreria di finestre di dialogo comuni (Comdlg32.dll) per eseguire attività che altrimenti potrebbero richiedere controlli di modifica personalizzati. Per informazioni sulle finestre di dialogo comuni, vedere Libreria di finestre di dialogo comuni.

Modifica tipi e stili di controllo

Un singolo controllo di modifica può avere più stili contemporaneamente. La maggior parte degli sviluppatori usa strumenti per sviluppare finestre di dialogo e pertanto potrebbe non dover specificare gli stili di controllo di modifica in modo esplicito. Se un'applicazione crea un controllo di modifica usando la funzione CreateWindow o CreateWindowEx, tuttavia, deve specificare questi stili di controllo di modifica. Per una tabella di stili di controllo di modifica, vedere Modificare gli stili di controllo.

Ogni controllo di modifica specifica una combinazione di valori di stile che definiscono l'aspetto e le caratteristiche del controllo di modifica. I valori di stile possono stabilire l'aspetto di un controllo di modifica a riga singola o su più righe; allinea il testo nel controllo; e determinare come, e anche se, il testo viene visualizzato nel controllo di modifica.

Stile multilinea

Esistono due stili di linea per i controlli di modifica. Il valore predefinito è un controllo di modifica a riga singola. Un'applicazione può anche creare un controllo di modifica su più righe usando lo stile ES_MULTILINE.

Stili di scorrimento

Lo stile ES_AUTOHSCROLL indica al controllo di modifica di scorrere il testo orizzontalmente, quando necessario, quando l'utente immette testo. Se questo stile non è specificato, il controllo di modifica non può scorrere orizzontalmente. Per i controlli di modifica a riga singola senza ES_AUTOHSCROLL, vengono accettati solo i caratteri che riempiono l'area visibile del controllo. Per i controlli di modifica su più righe senza ES_AUTOHSCROLL, il testo viene disposto alla riga successiva quando l'utente immette più testo di quanto possa essere visualizzato su una singola riga. Se ES_AUTOHSCROLL viene specificato per un controllo di modifica su più righe, il controllo scorre orizzontalmente quando l'utente immette più testo di quanto possa essere visualizzato su una singola riga; il testo non verrà disposto a capo.

ES_AUTOHSCROLL viene applicato automaticamente a un controllo di modifica multilinea allineato a sinistra con uno stile WS_HSCROLL. In altre parole, qualsiasi controllo di modifica a più righe allineato a sinistra con una barra di scorrimento orizzontale scorre automaticamente orizzontalmente.

ES_AUTOHSCROLL viene ignorato da un controllo di modifica su più righe non allineato a sinistra. I controlli di modifica multilinea allineati al centro e a destra non possono essere scorrere orizzontalmente

Lo stile ES_AUTOVSCROLL indica al controllo di modifica di scorrere il testo verticalmente quando l'utente immette più testo di quanto possa essere visualizzato nel controllo di modifica. Questo stile si applica solo ai controlli di modifica su più righe. Se questo stile non viene specificato per un controllo di modifica su più righe, il controllo di modifica non accetterà l'input quando viene immesso più testo di quanto possa essere visualizzato.

Stili di allineamento

Esistono tre stili che determinano l'allineamento del testo in un controllo di modifica da parte del sistema. Gli stili ES_LEFT, ES_CENTER e ES_RIGHT determinano se il testo è allineato rispettivamente a sinistra, al centro o a destra. I controlli di modifica multilinea allineati a destra e centrati non possono avere lo stile ES_AUTOHSCROLL , ovvero non possono scorrere orizzontalmente.

Sebbene non sia possibile modificare dinamicamente lo stile di allineamento di un controllo di modifica, è possibile usare le tecniche seguenti per aggirare questa restrizione:

  • Creare più controlli di modifica, uno per ogni stile necessario per l'applicazione e passare da un controllo all'altro in base alle esigenze.
  • Creare un nuovo controllo di modifica con lo stile desiderato in base alle esigenze e passare al nuovo controllo.

Stili di testo e input

Un'applicazione può usare stili per specificare il modo in cui il controllo di modifica visualizza il testo. Lo stile ES_LOWERCAedizione Standard fa sì che tutti i caratteri maiuscoli immessi nel controllo di modifica vengano convertiti in lettere minuscole. Analogamente, lo stile ES_UPPERCAedizione Standard comporta la conversione di tutti i caratteri minuscoli in maiuscolo.

Per altre informazioni sui set di caratteri, vedere Set di caratteri e Unicode.

Lo stile ES_NUMBER limita l'input alle cifre solo nel controllo di modifica.

Lo stile ES_READONLY modifica il controllo di modifica impostando lo stato di sola lettura.

Lo stile ES_PASSWORD visualizza tutti i caratteri in un controllo di modifica a riga singola asterischi. Un'applicazione può definire un carattere diverso da visualizzare usando il messaggio EM_edizione Standard TPASSWORDCHAR, come descritto più avanti in questo argomento.

Se un controllo di modifica proviene da Comctl32.dll versione 6, un cerchio nero è il carattere predefinito per lo stile ES_PASSWORD. Nei controlli di modifica delle versioni precedenti dei controlli comuni, il carattere predefinito è un asterisco.

Lo stile ES_OEMCONVERT fa sì che il testo immesso nel controllo di modifica venga convertito dai caratteri di Windows impostati sul set di caratteri OEM e quindi torna al set di caratteri di Windows. In questo modo si garantisce una conversione corretta dei caratteri quando l'applicazione chiama la funzione CharToOem per convertire una stringa di Windows nel controllo di modifica in caratteri OEM. ES_OEMCONVERT è più utile per i controlli di modifica che contengono nomi di file che verranno usati nei file system che non supportano Unicode.

Per un controllo di modifica su più righe in una finestra di dialogo, lo stile ES_WANTRETURN fa sì che il controllo inserisca un ritorno a capo quando l'utente preme il tasto INVIO durante l'immissione di testo. Se questo stile non viene specificato, premendo INVIO si avrà lo stesso effetto di premere il pulsante di pressione predefinito nella finestra di dialogo. Senza ES_WANTRETURN, l'utente deve premere CTRL+INVIO per inserire un ritorno a capo. Per informazioni su Wordwrap e interruzioni di riga, vedere Gestione di wordwrap e interruzioni di riga.

Stili di visualizzazione

Lo stile ES_NOHIDEedizione Standard L fa sì che il testo selezionato rimanga evidenziato quando il controllo di modifica non ha lo stato attivo. Senza questo stile, il testo selezionato perde l'evidenziazione quando il controllo perde lo stato attivo.

Per impostazione predefinita, un controllo di modifica non ha bordi. Per assegnarne uno, un'applicazione può usare lo stile della finestra WS_BORDER .

Per usare gli stili di visualizzazione con i controlli di modifica, un'applicazione deve includere un manifesto e deve chiamare InitCommonControls all'inizio del programma. Per informazioni sugli stili di visualizzazione, vedere Stili di visualizzazione. Per informazioni sui manifesti, vedere Abilitazione degli stili di visualizzazione.

Buffer di testo

Il sistema archivia il testo del controllo di modifica in un buffer e lo copia nel controllo, se necessario.

Negli argomenti seguenti viene illustrato come il sistema alloca e inizializza il buffer e ne modifica le caratteristiche:

Allocazione di un buffer di testo

Quando il sistema crea un controllo di modifica, crea automaticamente un buffer di testo, ne imposta le dimensioni iniziali e aumenta le dimensioni in base alle esigenze. Le dimensioni possono essere fino a un limite predefinito di circa 32 kilobyte (KB) per i controlli di modifica a riga singola. Poiché questo limite può cambiare, viene chiamato limite flessibile. Un'applicazione può impostare un limite rigido per le dimensioni del buffer inviando un messaggio EM_edizione Standard TLIMITTEXT al controllo di modifica. Se il buffer supera entrambi i limiti, il sistema invia all'applicazione un codice di notifica EN_ERRSPACE . Un'applicazione può recuperare il limite di testo corrente inviando un messaggio di EM_GETLIMITTEXT .

Il sistema crea in genere un buffer di controllo di modifica in una finestra di dialogo, usando memoria esterna al segmento di dati dell'applicazione. Un'applicazione può eliminare questo comportamento di allocazione predefinito e creare il buffer dall'heap locale usando lo stile DS_LOCALEDIT (vedere "Stili modello finestra di dialogo" in Informazioni sulle finestre di dialogo) durante la creazione del controllo di modifica. Un'applicazione che usa lo stile DS_LOCALEDIT è responsabile di tutte le allocazioni del buffer. Per eseguire l'allocazione iniziale, un'applicazione può chiamare la funzione LocalAlloc e passare l'handle del buffer restituito al controllo di modifica inviando un messaggio EM_edizione Standard THANDLE. Per eseguire allocazioni successive (in risposta a un codice di notifica EN_ERRSPACE , ad esempio), un'applicazione deve salvare il contenuto del buffer corrente (se necessario) e ottenere un nuovo buffer come indicato di seguito.

Per salvare il buffer corrente e recuperarne uno nuovo, seguire questa procedura.

  1. Recuperare l'handle della memoria attualmente allocata per il testo in un controllo di modifica su più righe inviando il controllo un messaggio EM_GETHANDLE.
  2. Liberare il buffer chiamando la funzione LocalFree.
  3. Ottenere un nuovo buffer (e un handle di buffer) chiamando LocalAlloc.
  4. Assegnare l'handle del buffer al sistema inviando al controllo un messaggio EM_edizione Standard THANDLE.

I messaggi EM_edizione Standard THANDLE e EM_GETHANDLE si applicano solo ai controlli di modifica su più righe.

Un'applicazione che utilizza il comportamento di allocazione predefinito ( ovvero non usa lo stile di DS_LOCALEDIT (vedere "Stili modello finestra di dialogo" in Informazioni sulle finestre di dialogo)) non deve inviare EM_edizione Standard THANDLE e EM_GETHANDLE messaggi al controllo di modifica.

L'invio di un messaggio EM_edizione Standard THANDLE ha diversi effetti collaterali: cancella il flag di annullamento (rendendo il messaggio di EM_CANUNDO restituito zero), cancella il flag di modifica (rendendo il messaggio di EM_GETMODIFY restituito zero) e ridisegna la finestra di controllo di modifica.

Inizializzazione di un buffer di testo

Un'applicazione può inizializzare o reinizializzare il buffer di testo di un controllo di modifica chiamando la funzione SetDlgItemText. Un'applicazione può recuperare il contenuto di un buffer di testo chiamando la funzione GetDlgItemText.

Creazione di un buffer di testo di sola lettura

Per ogni controllo di modifica, il sistema mantiene un flag di sola lettura che indica se il testo del controllo è di lettura/scrittura (impostazione predefinita) o di sola lettura. Un'applicazione può impostare il flag di lettura/scrittura o il flag di sola lettura per il testo inviando al controllo un messaggio EM_edizione Standard TREADONLY. Per determinare se un controllo di modifica è di sola lettura, un'applicazione può chiamare la funzione GetWindowLong usando la costante GWL_STYLE. Il messaggio EM_edizione Standard TREADONLY si applica sia ai controlli di modifica a riga singola che a più righe.

Modifica del rettangolo di formattazione

La visibilità del testo di un controllo di modifica è governata dalle dimensioni del relativo rettangolo di finestra e dal relativo rettangolo di formattazione. Il rettangolo della finestra è l'area client della finestra contenente il controllo di modifica. Il rettangolo di formattazione è un costrutto gestito dal sistema per la formattazione del testo visualizzato nel rettangolo della finestra. Quando un controllo di modifica viene visualizzato per la prima volta, i due rettangoli sono identici sullo schermo. Un'applicazione può rendere il rettangolo di formattazione più grande del rettangolo della finestra (limitando così la visibilità del testo del controllo di modifica) o più piccolo del rettangolo della finestra (creando spazi vuoti aggiuntivi intorno al testo).

Un'applicazione può impostare le coordinate del rettangolo di formattazione di un controllo di modifica inviando un messaggio EM_edizione Standard TRECT. Il messaggio EM_edizione Standard TRECT ridisegna automaticamente anche il testo del controllo di modifica. Per stabilire le coordinate del rettangolo di formattazione senza ridisegnare il testo del controllo, un'applicazione può inviare il controllo a un messaggio EM_edizione Standard TRECTNP. Per recuperare le coordinate del rettangolo di formattazione, un'applicazione può inviare il controllo a un messaggio EM_GETRECT. Questi messaggi si applicano solo ai controlli di modifica su più righe.

Modifica messaggi di notifica del controllo

L'utente effettua richieste di modifica usando la tastiera e il mouse. Il sistema invia ogni richiesta alla finestra padre del controllo di modifica sotto forma di messaggio di WM_COMMAND. Il messaggio include l'identificatore di controllo di modifica nella parola in ordine basso del parametro wParam , l'handle del controllo di modifica nel parametro lParam e un codice di notifica del controllo di modifica corrispondente all'azione dell'utente nella parola di ordine elevato del parametro wParam .

Un'applicazione deve esaminare i codici di notifica che accompagnano ogni messaggio di notifica e rispondere in modo appropriato. La tabella seguente elenca ogni codice di notifica del controllo di modifica e l'azione che la genera.

Codice di notifica Azione utente
EN_CHANGE L'utente ha modificato il testo in un controllo di modifica. Il sistema aggiorna la visualizzazione prima di inviare questo codice di notifica (a differenza di EN_UPDATE).
EN_ERRSPACE Il controllo di modifica non può allocare memoria sufficiente per soddisfare una richiesta specifica.
EN_HSCROLL L'utente ha fatto clic sulla barra di scorrimento orizzontale del controllo di modifica. Il sistema invia questo codice di notifica prima di aggiornare la schermata.
EN_KILLFOCUS L'utente ha selezionato un altro controllo.
EN_MAXTEXT Durante l'inserimento di testo, l'utente ha superato il numero specificato di caratteri per il controllo di modifica. L'inserimento è stato troncato. Questo codice di notifica viene inviato anche quando un controllo di modifica non dispone dello stile ES_AUTOHSCROLL e il numero di caratteri da inserire supera la larghezza del controllo di modifica o quando un controllo di modifica non dispone dello stile ES_AUTOVSCROLL e il numero totale di righe da inserire supera l'altezza del controllo di modifica.
EN_edizione Standard TFOCUS L'utente ha selezionato questo controllo di modifica.
EN_UPDATE L'utente ha modificato il testo nel controllo di modifica e il sistema sta per visualizzare il nuovo testo. Il sistema invia questo codice di notifica dopo la formattazione del testo, ma prima di visualizzarlo, in modo che l'applicazione possa ridimensionare la finestra di controllo di modifica.
EN_VSCROLL L'utente ha fatto clic sulla barra di scorrimento verticale del controllo di modifica o ha eseguito lo scorrimento della rotellina del mouse sul controllo di modifica. Il sistema invia questo codice di notifica prima di aggiornare la schermata.
EN_edizione Standard ARCHWEB L'utente ha fatto clic sulla voce di menu di scelta rapida "Cerca nel Web". Il sistema invia questa notifica dopo l'avvio del browser.

Inoltre, il sistema invia un messaggio di WM_CTLCOLOREDIT alla finestra padre di un controllo di modifica prima che venga disegnato il controllo di modifica. Questo messaggio contiene un handle del contesto di visualizzazione del controllo di modifica e un handle della finestra figlio. La finestra padre può utilizzare questi handle per modificare il testo e i colori di sfondo del controllo di modifica.

Modifica elaborazione messaggi predefinita del controllo

La procedura della finestra per la classe predefinita della finestra di controllo di modifica esegue l'elaborazione predefinita per tutti i messaggi non elaborati dalla routine di controllo di modifica. Quando la routine di controllo di modifica restituisce FAL edizione Standard per qualsiasi messaggio, la routine della finestra predefinita controlla i messaggi ed esegue le azioni predefinite seguenti.

Message Azione predefinita
EM_CANUNDO Restituisce TRUE se l'operazione di modifica del controllo può essere annullata.
EM_CHARFROMPOS Restituisce l'indice di caratteri e l'indice di riga del carattere più vicino al punto specificato.
EM_EMPTYUNDOBUFFER Svuota il buffer di annullamento e imposta il flag di annullamento recuperato dal messaggio di EM_CANUNDO su FAL edizione Standard. Il sistema cancella automaticamente il flag di annullamento ogni volta che il controllo di modifica riceve un messaggio WM_edizione Standard TTEXT o EM_edizione Standard THANDLE.
EM_FMTLINES Aggiunge o rimuove i caratteri di interruzione di riga soft (due ritorni a capo e un avanzamento riga) alle estremità delle righe di cui è stato eseguito il wrapping in un controllo di modifica su più righe. Non viene elaborato da controlli di modifica a riga singola.
EM_GETFIRSTVISIBLELINE Restituisce l'indice in base zero del primo carattere visibile in un controllo di modifica a riga singola o l'indice in base zero della riga più visibile in un controllo di modifica su più righe.
EM_GETHANDLE Restituisce un handle che identifica il buffer contenente il testo del controllo di modifica su più righe. Non viene elaborato da controlli di modifica a riga singola.
EM_GETLIMITTEXT Restituisce il limite di testo corrente, espresso in caratteri.
EM_GETLINE Copia i caratteri in un controllo di modifica a riga singola in un buffer e restituisce il numero di caratteri copiati. In un controllo di modifica su più righe recupera una riga di testo dal controllo e restituisce il numero di caratteri copiati.
EM_GETLINECOUNT Restituisce il numero di righe nel controllo di modifica.
EM_GETMARGINS Restituisce le larghezze dei margini sinistro e destro.
EM_GETMODIFY Restituisce un flag che indica se il contenuto di un controllo di modifica è stato modificato.
EM_GETPASSWORDCHAR Restituisce il carattere utilizzato dai controlli di modifica insieme allo stile ES_PASSWORD.
EM_GETRECT Restituisce le coordinate del rettangolo di formattazione in un controllo di modifica.
EM_GETedizione Standard L Restituisce le posizioni del carattere iniziale e finale della selezione corrente nel controllo di modifica.
EM_GETTHUMB Restituisce la posizione della casella di scorrimento nella barra di scorrimento verticale in un controllo di modifica su più righe.
EM_GETWORDBREAKPROC Restituisce l'indirizzo della funzione Wordwrap corrente in un controllo di modifica.
EM_LINEFROMCHAR Restituisce il numero in base zero della riga in un controllo di modifica su più righe contenente un indice di caratteri specificato. Questo messaggio è il contrario del messaggio di EM_LINEINDEX . Non viene elaborato da controlli di modifica a riga singola.
EM_LINEINDEX Restituisce il carattere di una riga in un controllo di modifica su più righe. Questo messaggio è l'inverso del messaggio di EM_LINEFROMCHAR . Non viene elaborato da controlli di modifica a riga singola.
EM_LINELENGTH Restituisce la lunghezza, in caratteri, di un controllo di modifica a riga singola. In un controllo di modifica su più righe restituisce la lunghezza, espressa in caratteri, di una riga specificata.
EM_LINESCROLL Scorre il testo verticalmente in un controllo di modifica a riga singola o orizzontalmente in un controllo di modifica su più righe (quando il controllo ha lo stile ES_LEFT). Il parametro lParam specifica il numero di righe da scorrere verticalmente, a partire dalla riga corrente. Il parametro wParam specifica il numero di caratteri da scorrere orizzontalmente, a partire dal carattere corrente.
EM_POSFROMCHAR Restituisce le coordinate client del carattere specificato.
EM_REPLACEedizione Standard L Sostituisce la selezione corrente con il testo in un buffer fornito dall'applicazione, invia la finestra padre EN_UPDATE e EN_CHANGE codici di notifica e aggiorna il buffer di annullamento.
EM_SCROLL Scorre il testo verticalmente in un controllo di modifica su più righe. Questo messaggio equivale all'invio di un messaggio di WM_VSCROLL al controllo di modifica. Non viene elaborato da controlli di modifica a riga singola.
EM_SCROLLCARET Scorre il cursore nella visualizzazione in un controllo di modifica.
EM_edizione Standard TFONT Non supportato.
EM_edizione Standard THANDLE Imposta un handle sulla memoria utilizzata come buffer di testo, svuota il buffer di annullamento, reimposta le posizioni di scorrimento su zero e ridisegna la finestra.
EM_edizione Standard TLIMITTEXT Imposta il numero massimo di caratteri che l'utente può immettere nel controllo di modifica. Per i controlli di modifica a riga singola, questo valore è 0x7FFFFFFE o il valore del parametro wParam , a qualsiasi valore minore. Per i controlli di modifica su più righe, questo valore è 1 o il valore del parametro wParam , a qualsiasi valore minore.
EM_edizione Standard TMARGINS Imposta le larghezze dei margini sinistro e destro e ridisegna il controllo di modifica in modo da riflettere i nuovi margini.
EM_edizione Standard TMODIFY Imposta o cancella il flag di modifica per indicare se il controllo di modifica è stato modificato.
EM_edizione Standard TPASSWORDCHAR Definisce il carattere utilizzato dai controlli di modifica insieme allo stile ES_PASSWORD.
EM_edizione Standard TREADONLY Imposta o rimuove lo stile di sola lettura (ES_READONLY) in un controllo di modifica.
EM_edizione Standard TRECT Imposta il rettangolo di formattazione per il controllo di modifica su più righe e ridisegna la finestra. Non viene elaborato da controlli di modifica a riga singola.
EM_edizione Standard TRECTNP Imposta il rettangolo di formattazione per il controllo di modifica su più righe, ma non ridisegna la finestra. Non viene elaborato da controlli di modifica a riga singola.
EM_edizione Standard T edizione Standard L Seleziona un intervallo di caratteri nel controllo di modifica impostando le posizioni iniziale e finale da selezionare.
EM_edizione Standard TTABSTOPS Imposta le posizioni tabulazioni nel controllo di modifica su più righe. Non viene elaborato da controlli di modifica a riga singola.
EM_edizione Standard TWORDBREAKPROC Sostituisce la funzione Wordwrap predefinita con una funzione Wordwrap definita dall'applicazione.
EM_UNDO Rimuove qualsiasi testo appena inserito o inserisce tutti i caratteri eliminati e imposta la selezione sul testo inserito. Se necessario, invia i codici di notifica EN_UPDATE e EN_CHANGE alla finestra padre.
WM_CHAR Scrive un carattere nel controllo di modifica a riga singola e invia i codici di notifica EN_UPDATE e EN_CHANGE alla finestra padre. Scrive un carattere nel controllo di modifica su più righe. Gestisce i tasti di scelta rapida per le funzioni standard, ad esempio CTRL+C per la copia e CTRL+V per il incollamento. Nei controlli di modifica su più righe elabora anche TAB e le sequenze di tasti CTRL+TAB per spostarsi tra i controlli in una finestra di dialogo e per inserire schede in controlli di modifica su più righe. Usa la funzione MessageBeep per i caratteri non validi.
WM_CLEAR Cancella la selezione corrente, se presente, in un controllo di modifica. Se non è presente alcuna selezione corrente, elimina il carattere a destra del cursore. Se l'utente preme il tasto MAIUSC, questa taglia la selezione negli Appunti o elimina il carattere a sinistra del cursore quando non è presente alcuna selezione. Se l'utente preme il tasto CTRL, la selezione viene eliminata o eliminata alla fine della riga quando non è presente alcuna selezione.
WM_COPY Copia il testo negli Appunti, a meno che lo stile non sia ES_PASSWORD, nel qual caso il messaggio restituisce zero.
WM_CREATE Crea il controllo di modifica e invia una notifica alla finestra padre con TRUE per l'esito positivo o 1 in caso di errore.
WM_CUT Taglia la selezione negli Appunti o elimina il carattere a sinistra del cursore se non è presente alcuna selezione.
WM_ENABLE Fa sì che il rettangolo venga ridisegnato in grigio per i controlli di modifica a riga singola. Restituisce lo stato abilitato per i controlli di modifica a riga singola e su più righe.
WM_ERAedizione Standard BKGND Riempie la finestra di controllo di modifica su più righe con il colore corrente del controllo di modifica.
WM_GETDLGCODE Restituisce i valori seguenti: DLGC_WANTCHARS, DLGC_HASedizione Standard T edizione Standard L e DLGC_WANTARROWS. Nei controlli di modifica su più righe restituisce anche DLGC_WANTALLKEYS. Se l'utente preme ALT+BACKSPACE, restituisce anche DLGC_WANTMESSAGE.
WM_GETFONT Restituisce l'handle del tipo di carattere utilizzato dal controllo o NULL se il controllo utilizza il tipo di carattere di sistema.
WM_GETTEXT Copia il numero specificato di caratteri in un buffer e restituisce il numero di caratteri copiati.
WM_GETTEXTLENGTH Restituisce la lunghezza, in caratteri, del testo in un controllo di modifica. La lunghezza non include il carattere di terminazione Null.
WM_HSCROLL Scorre il testo in un controllo di modifica su più righe orizzontalmente e gestisce lo spostamento della casella di scorrimento.
WM_KEYDOWN Esegue l'elaborazione standard dei codici di chiave virtuale.
WM_KILLFOCUS Rimuove lo stato attivo della tastiera di una finestra di controllo di modifica, elimina il cursore, nasconde la selezione corrente e notifica alla finestra padre che il controllo di modifica ha perso lo stato attivo.
WM_LBUTTONDBLCLK Cancella la selezione corrente e seleziona la parola sotto il cursore. Se il tasto MAIUSC è premuto, estende la selezione alla parola sotto il cursore.
WM_LBUTTONDOWN Modifica il punto di inserimento corrente. Se il tasto MAIUSC è premuto, estende la selezione alla posizione del cursore. Nei controlli di modifica su più righe imposta anche il timer per scorrere automaticamente quando l'utente tiene premuto il pulsante del mouse all'esterno della finestra di controllo di modifica su più righe.
WM_LBUTTONUP Rilascia l'acquisizione del mouse e imposta il punto di inserimento del testo nel controllo di modifica a riga singola. In un controllo di modifica su più righe termina anche il timer impostato nel messaggio di WM_LBUTTONDOWN .
WM_MOUedizione Standard MOVE Modifica la selezione corrente nel controllo di modifica a riga singola, se il pulsante del mouse è inattivo. In un controllo di modifica su più righe, imposta anche il timer per scorrere automaticamente se l'utente tiene premuto il pulsante del mouse all'esterno della finestra di controllo di modifica su più righe.
WM_NCCREATE Puntatore alla struttura CREATESTRUCT per la finestra. Questo messaggio viene inviato al messaggio di WM_CREATE quando viene creata una finestra per la prima volta.
WM_NCDESTROY Libera tutta la memoria associata alla finestra di controllo di modifica, incluso il buffer di testo, il buffer di annullamento, il buffer tabulazione e il pennello di evidenziazione.
WM_PAINT Cancella lo sfondo, riempie la finestra con il colore corrente della finestra di controllo di modifica, disegna il bordo (se presente), imposta il tipo di carattere e disegna qualsiasi testo e mostra il cursore di inserimento del testo.
WM_PASTE Incolla il testo dagli Appunti nella finestra di controllo di modifica in corrispondenza della posizione del cursore.
WM_edizione Standard TFOCUS Imposta lo stato attivo della tastiera di una finestra di controllo di modifica (mostra la selezione corrente, se nascosta e crea il cursore).
WM_edizione Standard TFONT Imposta il tipo di carattere e, facoltativamente, ridisegna il controllo di modifica.
WM_edizione Standard TTEXT Copia il testo nel controllo di modifica a riga singola, invia una notifica alla finestra padre quando la memoria non è sufficiente, svuota il buffer di annullamento e invia i codici di notifica EN_UPDATE e EN_CHANGE alla finestra padre. Nei controlli di modifica su più righe, riscrive anche le righe (se necessario) e imposta le posizioni di scorrimento.
WM_SIZE Imposta le dimensioni della finestra di controllo di modifica, assicurandosi che le dimensioni siano adatte all'altezza e alla larghezza di un carattere.
WM_SYSCHAR Restituisce TRUE se l'utente preme ALT+BACKSPACE; in caso contrario, non esegue alcuna azione.
WM_SYSKEYDOWN Annulla l'ultima azione se l'utente preme ALT+BACKSPACE; in caso contrario, non esegue alcuna azione.
WM_TIMER Scorre il testo nella finestra di controllo di modifica se l'utente tiene premuto il pulsante del mouse all'esterno della finestra del controllo di modifica su più righe.
WM_UNDO Rimuove qualsiasi testo appena inserito o inserisce tutti i caratteri eliminati e imposta la selezione sul testo inserito. Se necessario, invia i codici di notifica EN_UPDATE e EN_CHANGE alla finestra padre.
WM_VSCROLL Scorre un controllo di modifica su più righe verticalmente e gestisce lo spostamento delle caselle di scorrimento. Non viene elaborato da controlli di modifica a riga singola.

La procedura predefinita della finestra di controllo di modifica passa tutti gli altri messaggi alla funzione DefWindowProc per l'elaborazione predefinita.