[API Win32 sans MFC] Manipulation EDIT et CString

Résolu
cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 - 17 mai 2006 à 12:15
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 17 mai 2006 à 17:55
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

BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
17 mai 2006 à 17:55
On peut aussi ajouter directement du texte par EM_REPLACESEL

ciao...
BruNews, MVP VC++
3
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
17 mai 2006 à 12:48
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.
0
cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 1
17 mai 2006 à 12:57
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
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
17 mai 2006 à 14:14
TextLen = GetWindowTextLength(hEdit);
TCHAR* buf = new TCHAR[TextLen+1];
GetWindowText(hEdit,LeText, TextLen+1);
0
Rejoignez-nous