GetWindowText

Signaler
Messages postés
14
Date d'inscription
lundi 11 février 2002
Statut
Membre
Dernière intervention
14 novembre 2002
-
Artiste_Gunm
Messages postés
33
Date d'inscription
mardi 25 mai 2004
Statut
Membre
Dernière intervention
22 juillet 2008
-
J'utilise GetWindowText avec VC++6 pour reprendre le texte d'une edit box. Lorsque mon prog appel la function il fait une erreur dans le module USER.EXE.
J'en conclut que je me sert pas bien de la fonction alors comment on s'en sert???

8 réponses

Messages postés
117
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
14 janvier 2003
2
Poste ta ligne pour voir.
Messages postés
14
Date d'inscription
lundi 11 février 2002
Statut
Membre
Dernière intervention
14 novembre 2002

hkey est un HWND déclaré en global
Je crois que c'est GetWindowText et pas GetWindowTextLength qui bugue.

INT size,pass;
LPTSTR buffer;
size=GetWindowTextLength(hkey);
GetWindowText(hkey,buffer,size);
Messages postés
117
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
14 janvier 2003
2
J'ai pas percute tout de suite mais pour recuperer le texte d'une editbox, c'est pas GetWindowText qu'il faut utiliser mais GetDlgItemText.
GetWindowText recupere le titre de ta fenetre.

GetDlgItemText(HWND hDlg, int ID, LPTSTR buffer, int size);

Il suffit apres de choisir size et buffer de taille suffisante pour ne pas avoir de depassement.
Messages postés
368
Date d'inscription
mercredi 14 novembre 2001
Statut
Membre
Dernière intervention
1 septembre 2008

alors la, si c'est de getDlgItemText dont tu parles, je viens d'en baver suffisament pour pouvoir t'aider !

un exemple qui precise ce que jcecchi ta dit :

ta var dans laquelle va etre placé ton texte doit etre comme ceci :

char var[size];

et non pas :

char *var[size];

comme stipulé dans MSDN.

puis, ton get doit etre comme cela :

GetDlgItemText(hDlg,IDC_VAR,var,255);

où IDC_ART est le nom de ton controle duquel tu recupere la string.

var, ben c'est ou est stocké le contenu de IDC_VAR.

et 255, ca veut dire qu'il prend 255 caracteres.

en esperant t'avoir éclairci
Messages postés
16
Date d'inscription
mardi 26 mars 2002
Statut
Membre
Dernière intervention
20 juillet 2002

Xs a raison mais pour plus de souplesse:
utilise:
GetDlgItemText(hDlg,IDC_VAR,var,sizeof(var));
avec les déclarations de Xs
comme ca tu peux récupérer autant de caractères que tu veux.
a+
apientry
Messages postés
14
Date d'inscription
vendredi 3 janvier 2003
Statut
Membre
Dernière intervention
1 juillet 2005

Je vient de trouver un truc encore plus simple :
pour ajouter du texte :
SendMessage(ListWnd, LB_ADDSTRING, 0, (LPARAM)(LPCTSTR) "texte");
avec ListWnd le handle du label
pour recuperer le texte :
char var[255];
SendMessage(ListWnd, LB_GETTEXT, 0, (LPARAM)(LPCTSTR) var);

voila ca marche nickel et c'est pas trop compliqué du moment qu'on a le handle....
Messages postés
55
Date d'inscription
dimanche 19 septembre 2004
Statut
Membre
Dernière intervention
8 mai 2011

j'ai suivi la discussion et essayé la derniére méthode:

char var[255];
SendMessage(ListWnd, LB_GETTEXT, 0, (LPARAM)(LPCTSTR) var);

le seul probléme c'est que par la suite quand je fait cout << var
ca refuse de m'afficher le contenu de la fenetre, a la place ca me met un vieu symbole ascii
Messages postés
33
Date d'inscription
mardi 25 mai 2004
Statut
Membre
Dernière intervention
22 juillet 2008

Quelqu'un sait comment on fait pour sauter une ligne dans une editbox car lorsque j'utilise 0x0D ou '\r' l'editbox m'affiche un caractére genre DOS : |||
Assez bandant pour faire un historique propre !!!

Voilà mon code:

UpdateData(TRUE);
LPTSTR Emission= TEXT_EMISSION.GetBuffer(1);
LPTSTR History= TEXT_HISTORY.GetBuffer(1);
strcat((char *)History,(char *)Emission);
// Je voudrais pouvoir rajouter :
//strcat((char *)History,'\r');
TEXT_EMISSION.ReleaseBuffer();
TEXT_HISTORY.ReleaseBuffer();
UpdateData(FALSE);
TEXT_EMISSION='\0';
UpdateData(FALSE);

The Artiste-Gunm