[API Win32 sans MFC] Ajouter et récuperer du texte d'un EDIT

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:12
cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 - 17 mai 2006 à 16:19
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

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 mai 2006 à 15:39
Pour ajouter du texte il y a EM_REPLACESEL
Ca remplace la séléction courante par le texte contenu dans lParam
Si le curseur est à la fin, cela revient a faire une concaténation
Tu peux forcer la position du curseur avec EM_SETSEL

Dans ton titre tu dis sans MFC, pourquoi une CString alors?
Tu récupère dans un char*, très facile de contruire une CString avec ca:
char c[32];
GetWindowText(hEdit, c, 32);
CString str = c;
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 mai 2006 à 16:13
int length = GetWindowTextLength(hedit);
SendMessage(hedit, EM_SETSEL, length, length);
SendMessage(hedit, EM_REPLACESEL, ?, (LPARAM)"texte a ajouter à la fin");
3
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 à 15:54
Bonjour vecchio56,

Et bien non justement, je travaille avec embedded en unicode et c'est pleins de truc bizzares.
CString str = c; ne marche pas par exemple, il faut faire des casts sans arret.
CString str;
str.format(L"%s",c);
Mais je viens juste de découvrir ça !

Pour EM_REPLACESEL et EM_SETSEL, peux tu me donner un rapide exemple STP car je ne suis pas sur mon poste, je ne peux pas faire des essais.

Merci encore

David, à VERSAILLES
http://www.gentag.fr
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 à 16:19
Ok, je te remercie.

[;)] David, à VERSAILLES
http://www.gentag.fr
0
Rejoignez-nous