[API Win32 sans MFC] Manipulation EDIT et CString

[Résolu]
Signaler
Messages postés
344
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
4 avril 2011
-
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Bonjour à tous,

Bonjour à tous,






J'aimerais savoir comment Ajouter et récuperer du texte d'un EDIT créé comme suit:
case WM_CREATE:
hEdit = CreateWindow(_T("EDIT"),_T("Texte"),WS_VISIBLE|WS_CHILD|ES_MULTILINE|ES_WANTRETURN|WS_VSCROLL,0,25,150,100,hWnd,NULL,hInst,NULL
J'arrive à remplacer le texte avec: SetWindowText(hEdit,_T("Mon nouveau texte"));
Mais pas à ajouter du texte... (faut-il le récuperer dans une variable et le concatener à chaque fois ?).






J'aimerais également savoir comment récuperer le texte dans une variable CString ?






Merci d'avance.







David, à VERSAILLES
http://www.gentag.fr

4 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
On peut aussi ajouter directement du texte par EM_REPLACESEL

ciao...
BruNews, MVP VC++
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
Pour rajouter du texte, il faut effectivement récupérer dans un buffer et concaténéer (attention aux tailles)
char buf[256];
GetWindowText(hwnd, buf, 256);
strcat(buf, " ajout");
SetWindowText(hwnd, buf);

GetWindowTextLength(hwnd) donne la taille du texte actuel.

les CString c'est MFC donc tu peux pas utiliser en API pur.
Messages postés
344
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
4 avril 2011
1
Bonjour ymca2003,

Je développe avec embedded et c'est un peu particulier... J'ai accès à CString (j'ai inclus Afx.h).
Mais j'ai contourné le pb en utilisant un TCHAR... Ce m'est imposé par l'IDE (je suis en unicode).
N'y a t-il pas moyen d'allouer dynamiquement la taille du tableau TCHAR ?

unsigned int TextLen = 0; // Va contenir le nombres de caractères dans le EditBox
TCHAR LeText[255];
TextLen = GetWindowTextLength(hEdit); // Récupère le nombres de caractères dans le EditBox 
 if (TextLen) { // S'il n'est pas vide
     //LeText = new TCHAR[(TextLen + 2)]; // Alloue de la mémoire pour stocker le texte:  NE MARCHE PAS
     if (GetWindowText(hEdit,LeText,(TextLen+1))) // Si aucune erreur, Affiche le texte
      MessageBox(hWnd,LeText,_T("Texte"),MB_OK);
}

Merci

David, à VERSAILLES
http://www.gentag.fr
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
TextLen = GetWindowTextLength(hEdit);
TCHAR* buf = new TCHAR[TextLen+1];
GetWindowText(hEdit,LeText, TextLen+1);