Comment faire pour ajouter par programmation texte à un contrôle Edit

Traductions disponibles Traductions disponibles
Numéro d'article: 109550 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Résumé

Applications Windows utilisent souvent des contrôles d'édition pour afficher du texte. Ces applications doivent parfois ajouter du texte à la fin d'un contrôle d'édition au lieu de remplacer le texte existant. Il existe deux façons différentes pour effectuer cette opération dans Windows :
  • Utilisez les messages EM_SETSEL et EM_REPLACESEL.
  • Utiliser le message EM_SETSEL avec les fonctions de Presse-papiers ajouter du texte à la mémoire tampon du contrôle d'édition.

Plus d'informations

Remarque : Étant donné que les paramètres de message pour le message EM_SETSEL sont différents entre la version 32 bits et la version 16 bits, le code suivant utilise la macro Win32 pour déterminer au moment de la génération s'il s'agit d'une application 16 ou 32 bits.

Le message EM_SETSEL peut être utilisé pour placer une plage de texte sélectionnée dans un contrôle d'édition de Windows. Si les positions de début et de fin de la plage sont définies pour la même position, aucune sélection n'est effectuée et un signe d'insertion peut être placé à cette position. Pour placer un signe d'insertion à la fin du texte dans un contrôle d'édition Windows et définir le focus au contrôle d'édition, procédez comme suit :
   HWND hEdit = GetDlgItem (hDlg, ID_EDIT);
   int ndx = GetWindowTextLength (hEdit);
   SetFocus (hEdit);
   #ifdef WIN32
      SendMessage (hEdit, EM_SETSEL, (WPARAM)ndx, (LPARAM)ndx);
   #else
      SendMessage (hEdit, EM_SETSEL, 0, MAKELONG (ndx, ndx));
   #endif
une fois que le signe d'insertion est placé à la fin du contrôle d'édition, vous pouvez utiliser le EM_REPLACESEL pour ajouter du texte au contrôle d'édition. Une application envoie un message EM_REPLACESEL pour remplacer la sélection en cours dans un contrôle d'édition avec le texte spécifié par le paramètre lpszReplace (lParam). Étant donné qu'il n'y a aucune sélection en cours, le texte de remplacement est inséré à l'emplacement actuel du signe insertion. Cet exemple montre comment définir la sélection à la fin du contrôle d'édition et insère le texte dans la mémoire tampon :
   #ifdef WIN32
      SendMessage (hEdit, EM_SETSEL, (WPARAM)ndx, (LPARAM)ndx);
   #else
      SendMessage (hEdit, EM_SETSEL, 0, MAKELONG (ndx, ndx));
   #endif
      SendMessage (hEdit, EM_REPLACESEL, 0, (LPARAM) ((LPSTR) szBuffer));
				
pour insérer du texte dans un contrôle d'édition, il existe une autre méthode qui consiste à utiliser le Presse-papiers Windows. Si l'application possède le Presse-papiers, ouvrir ou recherche pratique d'ouvrir le Presse-papiers et copie le texte dans le Presse-papiers, il peut envoyer le message WM_PASTE au contrôle d'édition pour ajouter du texte. Bien entendu, toutes les données qui se trouvait dans le Presse-papiers seront perdues.

Avant d'envoyer le message WM_PASTE, le signe d'insertion doit être placé à la fin du texte de contrôle d'édition à l'aide du message EM_SETSEL. Voici le code «pseudo» qui montre comment implémenter cette méthode :
   OpenClipBoard () ;
   EmptyClipBoard() ;
   SetClipBoardData() ;

   #ifdef WIN32
      SendMessage (hEdit, EM_SETSEL, (WPARAM)ndx, (LPARAM)ndx);
   #else
      SendMessage (hEdit, EM_SETSEL, 0, MAKELONG (ndx, ndx));
   #endif
      SendMessage (hEdit, WM_PASTE,   0, 0L);
				
ce code de «pseudo» ajoute du texte à la fin du contrôle d'édition. Notez que les données dans le Presse-papiers doivent être au format CF_TEXT.

Propriétés

Numéro d'article: 109550 - Dernière mise à jour: lundi 11 juillet 2005 - Version: 1.3
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Platform Software Development Kit-January 2000 Edition
  • Microsoft Windows Software Development Kit 3.1
Mots-clés : 
kbmt kbctrl kbeditctrl kbhowto KB109550 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 109550
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com