À propos de Modifier les contrôles

Un contrôle d’édition est une fenêtre de contrôle rectangulaire généralement utilisée dans une boîte de dialogue pour permettre à l’utilisateur d’entrer et de modifier du texte.

Les contrôles Modifier prennent en charge à la fois le jeu de caractères Unicode dans lequel les caractères sont de deux octets et les jeux de caractères ANSI dans lesquels les caractères sont d’un octet. Pour plus d’informations sur les jeux de caractères Unicode et ANSI, consultez Unicode et jeux de caractères.

Les contrôles d’édition enrichi prennent en charge de nombreuses fonctionnalités qui ne sont pas disponibles dans les contrôles de modification système. Pour plus d’informations, consultez Contrôles d’édition enrichis.

Les rubriques suivantes sont abordées dans cette vue d’ensemble.

Modifier les fonctionnalités de contrôle

Lorsqu’il est sélectionné, un contrôle d’édition affiche un clin d’œil qui indique le point d’insertion. L’utilisateur peut ensuite entrer du texte, déplacer le point d’insertion ou sélectionner du texte à modifier à l’aide du clavier ou de la souris. Un contrôle d’édition envoie des codes de notification à sa fenêtre parente sous la forme de messages WM_COMMAND . Pour plus d’informations sur les messages d’un contrôle de modification, consultez Modifier les messages de notification de contrôle. Une fenêtre parente peut envoyer des messages à un contrôle d’édition dans une boîte de dialogue en appelant la fonction SendDlgItemMessage . Certains messages peuvent également être envoyés à l’aide de macros prédéfinies.

Le système fournit à la fois des contrôles d’édition monoligne et des contrôles d’édition multiligne. Les contrôles Modifier appartiennent à la classe de fenêtre EDIT.

Une zone de liste modifiable est un contrôle qui combine une grande partie des fonctionnalités d’un contrôle d’édition et d’une zone de liste. Dans une zone de liste déroulante, le contrôle d’édition affiche la sélection actuelle et la zone de liste présente les options qu’un utilisateur peut sélectionner. Pour plus d’informations sur les zones de liste déroulante, consultez Zones de liste déroulante.

De nombreux développeurs utilisent les boîtes de dialogue fournies dans la bibliothèque de boîtes de dialogue commune (Comdlg32.dll) pour effectuer des tâches qui, sinon, peuvent nécessiter des contrôles de modification personnalisés. Pour plus d’informations sur les boîtes de dialogue courantes, consultez Bibliothèque de boîtes de dialogue commune.

Modifier les types et styles de contrôle

Un contrôle d’édition individuel peut avoir plusieurs styles en même temps. La plupart des développeurs utilisent des outils pour développer des boîtes de dialogue et n’ont donc pas besoin de spécifier explicitement les styles de contrôle d’édition. Toutefois, si une application crée un contrôle d’édition à l’aide de la fonction CreateWindow ou CreateWindowEx , elle doit spécifier ces styles de contrôle de modification. Pour obtenir une table de modifier les styles de contrôle, consultez Modifier les styles de contrôle.

Chaque contrôle d’édition spécifie une combinaison de valeurs de style qui définissent l’apparence et les fonctionnalités du contrôle d’édition. Les valeurs de style peuvent établir l’apparence d’un contrôle d’édition monoligne ou multiligne ; aligner le texte dans le contrôle ; et déterminent comment et même si le texte s’affiche dans le contrôle d’édition.

Style multiligne

Il existe deux styles de ligne pour les contrôles de modification. La valeur par défaut est un contrôle d’édition à ligne unique. Une application peut également créer un contrôle d’édition multiligne à l’aide du style ES_MULTILINE .

Styles de défilement

Le style ES_AUTOHSCROLL indique au contrôle d’édition de faire défiler le texte horizontalement, si nécessaire, lorsque l’utilisateur entre du texte. Si ce style n’est pas spécifié, le contrôle d’édition ne peut pas faire défiler horizontalement. Pour les contrôles d’édition à ligne unique sans ES_AUTOHSCROLL, seuls les caractères qui remplissent la zone visible du contrôle sont acceptés. Pour les contrôles d’édition multilignes sans ES_AUTOHSCROLL, le texte passe à la ligne suivante lorsque l’utilisateur entre plus de texte que ne peut être affiché sur une seule ligne. Si ES_AUTOHSCROLL est spécifié pour un contrôle d’édition multiligne, le contrôle défile horizontalement lorsque l’utilisateur entre plus de texte que ne peut être affiché sur une seule ligne ; le texte ne sera pas encapsulé.

ES_AUTOHSCROLL est automatiquement appliqué à un contrôle d’édition multiligne aligné à gauche qui a un style WS_HSCROLL . En d’autres termes, tout contrôle d’édition multiligne aligné à gauche qui a une barre de défilement horizontale défile automatiquement horizontalement.

ES_AUTOHSCROLL est ignoré par un contrôle d’édition multiligne qui n’est pas aligné à gauche. Les contrôles d’édition multiligne centrés et alignés vers la droite ne peuvent pas faire l’objet d’un défilement horizontal

Le style ES_AUTOVSCROLL indique au contrôle d’édition de faire défiler le texte verticalement lorsque l’utilisateur entre plus de texte que ce qui peut être affiché dans le contrôle d’édition. Ce style s’applique uniquement aux contrôles d’édition multiligne. Si ce style n’est pas spécifié pour un contrôle d’édition multiligne, le contrôle d’édition n’accepte pas l’entrée lorsque plus de texte est entré que ne peut être affiché.

Styles d’alignement

Il existe trois styles qui permettent au système d’aligner le texte dans un contrôle d’édition. Les styles ES_LEFT, ES_CENTER et ES_RIGHT déterminent si le texte est aligné respectivement à gauche, au centre ou à droite. Les contrôles d’édition multilignes alignés à droite et centrés ne peuvent pas avoir le style ES_AUTOHSCROLL ; autrement dit, ils ne peuvent pas faire défiler horizontalement.

Bien qu’il ne soit pas possible de modifier dynamiquement le style d’alignement d’un contrôle d’édition, les techniques suivantes peuvent être utilisées pour contourner cette restriction :

  • Créez plusieurs contrôles de modification, un pour chaque style dont l’application a besoin et pour basculer entre eux selon les besoins.
  • Créez un contrôle d’édition avec le style souhaité en fonction des besoins et basculez vers le nouveau contrôle.

Styles de texte et d’entrée

Une application peut utiliser des styles pour spécifier la façon dont le contrôle d’édition affiche le texte. Le style ES_LOWERCASE entraîne la conversion en minuscules de tous les caractères majuscules entrés dans le contrôle d’édition. De même, le style ES_UPPERCASE entraîne la conversion de tous les caractères minuscules en majuscules.

Pour plus d’informations sur les jeux de caractères, consultez Unicode et jeux de caractères.

Le style ES_NUMBER limite l’entrée aux chiffres uniquement dans le contrôle d’édition.

Le style ES_READONLY modifie le contrôle d’édition en status en lecture seule.

Le style ES_PASSWORD affiche tous les caractères d’un contrôle d’édition à une ligne sous forme d’astérisque. Une application peut définir un caractère différent à afficher à l’aide du message EM_SETPASSWORDCHAR , comme décrit plus loin dans cette rubrique.

Si un contrôle d’édition provient de Comctl32.dll version 6, un cercle noir est le caractère par défaut du style ES_PASSWORD . Dans modifier des contrôles des versions précédentes des contrôles courants, le caractère par défaut est un astérisque.

Le style ES_OEMCONVERT permet de convertir le texte entré dans le contrôle d’édition à partir des caractères Windows définis en jeu de caractères OEM, puis de revenir au jeu de caractères Windows. Cela garantit une conversion correcte des caractères lorsque l’application appelle la fonction CharToOem pour convertir une chaîne Windows dans le contrôle d’édition en caractères OEM. ES_OEMCONVERT est particulièrement utile pour modifier les contrôles qui contiennent des noms de fichiers qui seront utilisés sur les systèmes de fichiers qui ne prennent pas en charge Unicode.

Pour un contrôle d’édition multiligne dans une boîte de dialogue, le style ES_WANTRETURN entraîne l’insertion d’un retour chariot lorsque l’utilisateur appuie sur la touche ENTRÉE lors de la saisie de texte. Si ce style n’est pas spécifié, appuyer sur la touche ENTRÉE a le même effet que d’appuyer sur le bouton push par défaut dans la boîte de dialogue. Sans ES_WANTRETURN, l’utilisateur doit appuyer sur Ctrl+Entrée pour insérer un retour chariot. Pour plus d’informations sur Wordwrap et les sauts de ligne, consultez Gestion des wordwrap et des sauts de ligne.

Styles visuels

Le style ES_NOHIDESEL fait que le texte sélectionné reste mis en surbrillance lorsque le contrôle d’édition n’a pas le focus. Sans ce style, le texte sélectionné perd la mise en surbrillance lorsque le contrôle perd le focus.

Par défaut, un contrôle d’édition n’a pas de bordure. Pour lui en donner un, une application peut utiliser le style de fenêtre WS_BORDER .

Pour utiliser des styles visuels avec des contrôles de modification, une application doit inclure un manifeste et appeler InitCommonControls au début du programme. Pour plus d’informations sur les styles visuels, consultez Styles visuels. Pour plus d’informations sur les manifestes, consultez Activation des styles visuels.

Mémoire tampon de texte

Le système stocke le texte de contrôle de modification dans une mémoire tampon et le copie dans le contrôle, si nécessaire.

Les rubriques suivantes expliquent comment le système alloue et initialise la mémoire tampon et modifie ses caractéristiques :

Allocation d’une mémoire tampon de texte

Lorsque le système crée un contrôle d’édition, il crée automatiquement une mémoire tampon de texte, définit sa taille initiale et augmente la taille si nécessaire. La taille peut atteindre une limite prédéfinie d’environ 32 kilo-octets (Ko) pour les contrôles d’édition sur une seule ligne. Étant donné que cette limite peut changer, elle est appelée limite réversible. Une application peut définir une limite stricte à la taille de la mémoire tampon en envoyant un message EM_SETLIMITTEXT au contrôle d’édition. Si la mémoire tampon dépasse l’une des limites, le système envoie à l’application un code de notification EN_ERRSPACE . Une application peut récupérer la limite de texte actuelle en envoyant un message EM_GETLIMITTEXT .

Le système crée généralement une mémoire tampon de contrôle d’édition dans une boîte de dialogue, à l’aide de la mémoire en dehors du segment de données de l’application. Une application peut supprimer ce comportement d’allocation par défaut et créer la mémoire tampon à partir de son tas local en utilisant le style DS_LOCALEDIT (voir « Styles de modèle de boîte de dialogue » dans À propos des boîtes de dialogue) lors de la création du contrôle d’édition. Une application qui utilise le style DS_LOCALEDIT est responsable de toutes les allocations de mémoire tampon. Pour effectuer l’allocation initiale, une application peut appeler la fonction LocalAlloc et passer le handle de mémoire tampon retourné au contrôle d’édition en lui envoyant un message EM_SETHANDLE . Pour effectuer les allocations suivantes (en réponse à un code de notification EN_ERRSPACE , par exemple), une application doit enregistrer le contenu de la mémoire tampon actuelle (si nécessaire) et obtenir une nouvelle mémoire tampon comme suit.

Pour enregistrer la mémoire tampon actuelle et en obtenir une nouvelle, suivez cette procédure.

  1. Récupérez le handle de la mémoire actuellement allouée au texte dans un contrôle d’édition multiligne en envoyant au contrôle un message EM_GETHANDLE .
  2. Libérez la mémoire tampon en appelant la fonction LocalFree .
  3. Obtenez une nouvelle mémoire tampon (et un descripteur de mémoire tampon) en appelant LocalAlloc.
  4. Donnez le handle de mémoire tampon au système en envoyant au contrôle un message EM_SETHANDLE .

Les messages EM_SETHANDLE et EM_GETHANDLE s’appliquent uniquement aux contrôles d’édition multiligne.

Une application qui utilise le comportement d’allocation par défaut (autrement dit, n’utilise pas le style DS_LOCALEDIT (voir « Styles de modèle de boîte de dialogue » dans À propos des boîtes de dialogue)) ne doit pas envoyer de messages EM_SETHANDLE et EM_GETHANDLE au contrôle d’édition.

L’envoi d’un message EM_SETHANDLE a plusieurs effets secondaires : il efface l’indicateur d’annulation (rendant le message EM_CANUNDO zéro), efface l’indicateur de modification (le message EM_GETMODIFY renvoie zéro) et redessine la fenêtre de contrôle d’édition.

Initialisation d’une mémoire tampon de texte

Une application peut initialiser ou réinitialiser la mémoire tampon de texte d’un contrôle d’édition en appelant la fonction SetDlgItemText . Une application peut récupérer le contenu d’une mémoire tampon de texte en appelant la fonction GetDlgItemText .

Création d’une mémoire tampon de texte en lecture seule

Pour chaque contrôle d’édition, le système conserve un indicateur en lecture seule qui indique si le texte du contrôle est en lecture/écriture (valeur par défaut) ou en lecture seule. Une application peut définir l’indicateur de lecture/écriture ou l’indicateur en lecture seule pour le texte en envoyant au contrôle un message EM_SETREADONLY . Pour déterminer si un contrôle d’édition est en lecture seule, une application peut appeler la fonction GetWindowLong à l’aide de la constante GWL_STYLE . Le message EM_SETREADONLY s’applique aux contrôles d’édition monoligne et multiligne.

Modification du rectangle de mise en forme

La visibilité du texte d’un contrôle d’édition est régie par les dimensions de son rectangle de fenêtre et son rectangle de mise en forme. Le rectangle de fenêtre est la zone cliente de la fenêtre contenant le contrôle d’édition. Le rectangle de mise en forme est une construction gérée par le système pour la mise en forme du texte affiché dans le rectangle de fenêtre. Lorsqu’un contrôle d’édition est affiché pour la première fois, les deux rectangles sont identiques à l’écran. Une application peut rendre le rectangle de mise en forme plus grand que le rectangle de fenêtre (limitant ainsi la visibilité du texte du contrôle d’édition) ou plus petit que le rectangle de fenêtre (créant ainsi un espace blanc supplémentaire autour du texte).

Une application peut définir les coordonnées du rectangle de mise en forme d’un contrôle d’édition en lui envoyant un message EM_SETRECT . Le message EM_SETRECT redessine également automatiquement le texte du contrôle d’édition. Pour établir les coordonnées du rectangle de mise en forme sans redessiner le texte du contrôle, une application peut envoyer au contrôle un message EM_SETRECTNP . Pour récupérer les coordonnées du rectangle de mise en forme, une application peut envoyer au contrôle un message EM_GETRECT . Ces messages s’appliquent uniquement aux contrôles d’édition multiligne.

Modifier les messages de notification de contrôle

L’utilisateur effectue des demandes de modification à l’aide du clavier et de la souris. Le système envoie chaque requête à la fenêtre parente du contrôle d’édition sous la forme d’un message WM_COMMAND . Le message inclut l’identificateur de contrôle de modification dans le mot d’ordre inférieur du paramètre wParam , le handle du contrôle d’édition dans le paramètre lParam et un code de notification de contrôle de modification correspondant à l’action de l’utilisateur dans le mot d’ordre supérieur du paramètre wParam .

Une application doit examiner les codes de notification qui accompagnent chaque message de notification et répondre de manière appropriée. Le tableau suivant répertorie chaque code de notification de contrôle de modification et l’action qui le génère.

Code de notification Action requise
EN_CHANGE L’utilisateur a modifié du texte dans un contrôle d’édition. Le système met à jour l’affichage avant d’envoyer ce code de notification (contrairement à EN_UPDATE).
EN_ERRSPACE Le contrôle d’édition ne peut pas allouer suffisamment de mémoire pour répondre à une demande spécifique.
EN_HSCROLL L’utilisateur a cliqué sur la barre de défilement horizontale du contrôle d’édition. Le système envoie ce code de notification avant de mettre à jour l’écran.
EN_KILLFOCUS L’utilisateur a sélectionné un autre contrôle.
EN_MAXTEXT Lors de l’insertion de texte, l’utilisateur a dépassé le nombre spécifié de caractères pour le contrôle d’édition. L’insertion a été tronquée. Ce code de notification est également envoyé lorsqu’un contrôle d’édition n’a pas le style ES_AUTOHSCROLL et que le nombre de caractères à insérer dépasse la largeur du contrôle d’édition ou lorsqu’un contrôle d’édition n’a pas le style ES_AUTOVSCROLL et que le nombre total de lignes à insérer dépasse la hauteur du contrôle d’édition.
EN_SETFOCUS L’utilisateur a sélectionné ce contrôle d’édition.
EN_UPDATE L’utilisateur a modifié le texte dans le contrôle d’édition et le système est sur le point d’afficher le nouveau texte. Le système envoie ce code de notification après la mise en forme du texte, mais avant de l’afficher, afin que l’application puisse redimensionner la fenêtre de contrôle d’édition.
EN_VSCROLL L’utilisateur a cliqué sur la barre de défilement verticale du contrôle d’édition ou a fait défiler la roulette de la souris sur le contrôle d’édition. Le système envoie ce code de notification avant de mettre à jour l’écran.
EN_SEARCHWEB L’utilisateur a cliqué sur l’entrée de menu contextuel « Rechercher sur le web ». Le système envoie cette notification après avoir lancé le navigateur.

En outre, le système envoie un message WM_CTLCOLOREDIT à la fenêtre parente d’un contrôle d’édition avant que le contrôle de modification ne soit dessiné. Ce message contient un handle du contexte d’affichage (DC) du contrôle d’édition et un handle de la fenêtre enfant. La fenêtre parente peut utiliser ces handles pour modifier le texte et les couleurs d’arrière-plan du contrôle d’édition.

Modifier le contrôle Traitement des messages par défaut

La procédure de fenêtre pour la classe de fenêtre de contrôle d’édition prédéfinie effectue le traitement par défaut pour tous les messages que la procédure de contrôle de modification ne traite pas. Lorsque la procédure de contrôle d’édition retourne FALSE pour n’importe quel message, la procédure de fenêtre prédéfinie vérifie les messages et effectue les actions par défaut suivantes.

Message Action par défaut
EM_CANUNDO Retourne TRUE si l’opération de contrôle d’édition peut être annulée.
EM_CHARFROMPOS Retourne l’index de caractères et l’index de ligne du caractère le plus proche du point spécifié.
EM_EMPTYUNDOBUFFER Vide la mémoire tampon d’annulation et définit l’indicateur d’annulation récupéré par le message EM_CANUNDO sur FALSE. Le système efface automatiquement l’indicateur d’annulation chaque fois que le contrôle d’édition reçoit un message WM_SETTEXT ou EM_SETHANDLE .
EM_FMTLINES Ajoute ou supprime des caractères de saut de ligne souples (deux retours chariot et un flux de ligne) aux extrémités des lignes encapsulées dans un contrôle d’édition multiligne. Il n’est pas traité par les contrôles d’édition sur une seule ligne.
EM_GETFIRSTVISIBLELINE Retourne l’index de base zéro du premier caractère visible dans un contrôle d’édition à ligne unique ou l’index de base zéro de la ligne la plus haute visible dans un contrôle d’édition multiligne.
EM_GETHANDLE Retourne un handle identifiant la mémoire tampon contenant le texte du contrôle d’édition multiligne. Il n’est pas traité par les contrôles d’édition sur une seule ligne.
EM_GETLIMITTEXT Retourne la limite de texte actuelle, en caractères.
EM_GETLINE Copie les caractères d’un contrôle d’édition sur une seule ligne dans une mémoire tampon et retourne le nombre de caractères copiés. Dans un contrôle d’édition multiligne, récupère une ligne de texte du contrôle et retourne le nombre de caractères copiés.
EM_GETLINECOUNT Retourne le nombre de lignes dans le contrôle d’édition.
EM_GETMARGINS Retourne les largeurs des marges gauche et droite.
EM_GETMODIFY Retourne un indicateur indiquant si le contenu d’un contrôle d’édition a été modifié.
EM_GETPASSWORDCHAR Retourne le caractère que les contrôles de modification utilisent conjointement avec le style ES_PASSWORD .
EM_GETRECT Retourne les coordonnées du rectangle de mise en forme dans un contrôle d’édition.
EM_GETSEL Retourne les positions de caractères de début et de fin de la sélection actuelle dans le contrôle d’édition.
EM_GETTHUMB Renvoie la position de la zone de défilement dans la barre de défilement verticale d’un contrôle d’édition multiligne.
EM_GETWORDBREAKPROC Retourne l’adresse de la fonction Wordwrap actuelle dans un contrôle d’édition.
EM_LINEFROMCHAR Retourne le numéro de base zéro de la ligne dans un contrôle d’édition multiligne qui contient un index de caractères spécifié. Ce message est l’inverse du message EM_LINEINDEX . Il n’est pas traité par les contrôles d’édition à une seule ligne.
EM_LINEINDEX Retourne le caractère d’une ligne dans un contrôle d’édition multiligne. Ce message est l’inverse du message EM_LINEFROMCHAR . Il n’est pas traité par les contrôles d’édition à une seule ligne.
EM_LINELENGTH Retourne la longueur, en caractères, d’un contrôle de modification à une ligne. Dans un contrôle d’édition multiligne, retourne la longueur, en caractères, d’une ligne spécifiée.
EM_LINESCROLL Fait défiler le texte verticalement dans un contrôle d’édition monoligne ou horizontalement dans un contrôle d’édition multiligne (lorsque le contrôle a le style ES_LEFT ). Le paramètre lParam spécifie le nombre de lignes à faire défiler verticalement, à partir de la ligne actuelle. Le paramètre wParam spécifie le nombre de caractères à faire défiler horizontalement, à partir du caractère actuel.
EM_POSFROMCHAR Retourne les coordonnées client du caractère spécifié.
EM_REPLACESEL Remplace la sélection actuelle par le texte d’une mémoire tampon fournie par l’application, envoie la fenêtre parente EN_UPDATE et EN_CHANGE codes de notification, puis met à jour la mémoire tampon d’annulation.
EM_SCROLL Fait défiler le texte verticalement dans un contrôle d’édition multiligne. Ce message équivaut à envoyer un message WM_VSCROLL au contrôle d’édition. Il n’est pas traité par les contrôles d’édition à une seule ligne.
EM_SCROLLCARET Fait défiler le caret dans une vue dans un contrôle d’édition.
EM_SETFONT Non prise en charge.
EM_SETHANDLE Définit un handle sur la mémoire utilisée comme mémoire tampon de texte, vide la mémoire tampon d’annulation, réinitialise les positions de défilement à zéro et redessine la fenêtre.
EM_SETLIMITTEXT Définit le nombre maximal de caractères que l’utilisateur peut entrer dans le contrôle d’édition. Pour les contrôles d’édition à ligne unique, cette valeur est 0x7FFFFFFE ou la valeur du paramètre wParam , selon la valeur la plus petite. Pour les contrôles d’édition multilignes, cette valeur est 1 ou la valeur du paramètre wParam , selon la plus petite des deux.
EM_SETMARGINS Définit les largeurs des marges gauche et droite, et redessine le contrôle d’édition pour refléter les nouvelles marges.
EM_SETMODIFY Définit ou efface l’indicateur de modification pour indiquer si le contrôle d’édition a été modifié.
EM_SETPASSWORDCHAR Définit le caractère que les contrôles de modification utilisent conjointement avec le style ES_PASSWORD .
EM_SETREADONLY Définit ou supprime le style en lecture seule (ES_READONLY) dans un contrôle d’édition.
EM_SETRECT Définit le rectangle de mise en forme pour le contrôle d’édition multiligne et redessine la fenêtre. Il n’est pas traité par les contrôles d’édition à une seule ligne.
EM_SETRECTNP Définit le rectangle de mise en forme pour le contrôle d’édition multiligne, mais ne redessine pas la fenêtre. Il n’est pas traité par les contrôles d’édition à une seule ligne.
EM_SETSEL Sélectionne une plage de caractères dans le contrôle d’édition en définissant les positions de début et de fin à sélectionner.
EM_SETTABSTOPS Définit les positions de taquet de tabulation dans le contrôle d’édition multiligne. Il n’est pas traité par les contrôles d’édition à une seule ligne.
EM_SETWORDBREAKPROC Remplace la fonction Wordwrap par défaut par une fonction Wordwrap définie par l’application.
EM_UNDO Supprime tout texte qui vient d’être inséré ou insère des caractères supprimés et définit la sélection sur le texte inséré. Si nécessaire, envoie les codes de notification EN_UPDATE et EN_CHANGE à la fenêtre parente.
WM_CHAR Écrit un caractère dans le contrôle d’édition à ligne unique et envoie les codes de notification EN_UPDATE et EN_CHANGE à la fenêtre parente. Écrit un caractère dans le contrôle d’édition multiligne. Gère les touches d’accélérateur pour les fonctions standard, telles que CTRL+C pour la copie et CTRL+V pour le collage. Dans les contrôles d’édition multilignes, traite également les combinaisons de touches TAB et CTRL+TAB pour se déplacer parmi les contrôles d’une boîte de dialogue et pour insérer des onglets dans des contrôles d’édition multilignes. Utilise la fonction MessageBeep pour les caractères non autorisés.
WM_CLEAR Efface la sélection actuelle, le cas échéant, dans un contrôle d’édition. S’il n’y a pas de sélection actuelle, supprime le caractère à droite du caret. Si l’utilisateur appuie sur la touche MAJ, cela coupe la sélection dans le Presse-papiers ou supprime le caractère à gauche du caret en l’absence de sélection. Si l’utilisateur appuie sur la touche Ctrl, la sélection est supprimée ou supprimée à la fin de la ligne en l’absence de sélection.
WM_COPY Copie le texte dans le Presse-papiers, sauf si le style est ES_PASSWORD, auquel cas le message retourne zéro.
WM_CREATE Crée le contrôle d’édition et avertit la fenêtre parente avec TRUE en cas de réussite ou 1 en cas d’échec.
WM_CUT Coupe la sélection dans le Presse-papiers ou supprime le caractère à gauche du curseur en l’absence de sélection.
WM_ENABLE Provoque le redessination du rectangle en gris pour les contrôles d’édition sur une seule ligne. Retourne l’état activé pour les contrôles d’édition monoligne et multiligne.
WM_ERASEBKGND Remplit la fenêtre de contrôle d’édition multiligne avec la couleur actuelle du contrôle d’édition.
WM_GETDLGCODE Retourne les valeurs suivantes : DLGC_WANTCHARS, DLGC_HASSETSEL et DLGC_WANTARROWS. Dans les contrôles de modification multilignes, il retourne également DLGC_WANTALLKEYS. Si l’utilisateur appuie sur ALT+BACKSPACE, il retourne également DLGC_WANTMESSAGE.
WM_GETFONT Retourne le handle de la police utilisée par le contrôle, ou NULL si le contrôle utilise la police système.
WM_GETTEXT Copie le nombre de caractères spécifié dans une mémoire tampon et retourne le nombre de caractères copiés.
WM_GETTEXTLENGTH Retourne la longueur, en caractères, du texte d’un contrôle de modification. La longueur n’inclut pas le caractère de fin null.
WM_HSCROLL Fait défiler le texte dans un contrôle d’édition multiligne horizontalement et gère le déplacement de la zone de défilement.
WM_KEYDOWN Effectue le traitement standard des codes de clé virtuelle.
WM_KILLFOCUS Supprime le focus clavier d’une fenêtre de contrôle d’édition, détruit le caret, masque la sélection actuelle et avertit la fenêtre parente que le contrôle d’édition a perdu le focus.
WM_LBUTTONDBLCLK Efface la sélection actuelle et sélectionne le mot sous le curseur. Si la touche MAJ est enfoncée, étend la sélection au mot sous le curseur.
WM_LBUTTONDOWN Modifie le point d’insertion actuel. Si la touche MAJ est enfoncée, étend la sélection à la position du curseur. Dans les contrôles d’édition multilignes, définit également le minuteur pour qu’il défile automatiquement lorsque l’utilisateur maintient le bouton de la souris en dehors de la fenêtre de contrôle d’édition multiligne.
WM_LBUTTONUP Libère la capture de la souris et définit le point d’insertion de texte dans le contrôle d’édition à ligne unique. Dans un contrôle d’édition multiligne, met également fin au minuteur défini dans le message WM_LBUTTONDOWN .
WM_MOUSEMOVE Modifie la sélection actuelle dans le contrôle d’édition à ligne unique, si le bouton de la souris est désactivé. Dans un contrôle d’édition multiligne, définit également le minuteur pour qu’il défile automatiquement si l’utilisateur maintient le bouton de la souris en dehors de la fenêtre de contrôle d’édition multiligne.
WM_NCCREATE Pointeur vers la structure CREATESTRUCT de la fenêtre. Ce message est envoyé au WM_CREATE message lors de la première création d’une fenêtre.
WM_NCDESTROY Libère toute la mémoire associée à la fenêtre de contrôle d’édition, y compris la mémoire tampon de texte, la mémoire tampon d’annulation, la mémoire tampon d’arrêt de tabulation et le pinceau de mise en surbrillance.
WM_PAINT Efface l’arrière-plan, remplit la fenêtre avec la couleur actuelle de la fenêtre de contrôle d’édition, dessine la bordure (le cas échéant), définit la police et dessine n’importe quel texte et affiche le caret d’insertion de texte.
WM_PASTE Colle le texte du Presse-papiers dans la fenêtre de contrôle d’édition à la position carete.
WM_SETFOCUS Définit le focus clavier d’une fenêtre de contrôle d’édition (affiche la sélection active, si elle a été masquée, et crée le caret).
WM_SETFONT Définit la police et redessine éventuellement le contrôle d’édition.
WM_SETTEXT Copie le texte dans le contrôle d’édition à ligne unique, avertit la fenêtre parente en cas de mémoire insuffisante, vide la mémoire tampon d’annulation et envoie les codes de notification EN_UPDATE et EN_CHANGE à la fenêtre parente. Dans les contrôles d’édition multiligne, réenrape également les lignes (si nécessaire) et définit les positions de défilement.
WM_SIZE Définit la taille de la fenêtre de contrôle d’édition, en veillant à ce que la taille s’applique à la hauteur et à la largeur d’un caractère.
WM_SYSCHAR Retourne TRUE si l’utilisateur appuie sur ALT+BACKSPACE ; sinon, n’effectue aucune action.
WM_SYSKEYDOWN Annule la dernière action si l’utilisateur appuie sur ALT+BACKSPACE ; sinon, n’effectue aucune action.
WM_TIMER Fait défiler le texte dans la fenêtre modifier le contrôle si l’utilisateur maintient le bouton de la souris en dehors de la fenêtre de contrôle d’édition multiligne.
WM_UNDO Supprime tout texte qui vient d’être inséré ou insère des caractères supprimés et définit la sélection sur le texte inséré. Si nécessaire, envoie les codes de notification EN_UPDATE et EN_CHANGE à la fenêtre parente.
WM_VSCROLL Fait défiler verticalement un contrôle d’édition multiligne et gère le déplacement de la zone de défilement. Il n’est pas traité par les contrôles d’édition à une seule ligne.

La procédure de fenêtre de contrôle d’édition prédéfinie transmet tous les autres messages à la fonction DefWindowProc pour le traitement par défaut.