GetWindowText

cs_Toobad Messages postés 14 Date d'inscription lundi 11 février 2002 Statut Membre Dernière intervention 14 novembre 2002 - 27 mars 2002 à 19:55
Artiste_Gunm Messages postés 33 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 22 juillet 2008 - 22 mars 2005 à 09:17
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

jcecchi Messages postés 117 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 14 janvier 2003 3
27 mars 2002 à 20:01
Poste ta ligne pour voir.
0
cs_Toobad Messages postés 14 Date d'inscription lundi 11 février 2002 Statut Membre Dernière intervention 14 novembre 2002
28 mars 2002 à 13:19
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);
0
jcecchi Messages postés 117 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 14 janvier 2003 3
28 mars 2002 à 16:14
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.
0
cs_Xs Messages postés 368 Date d'inscription mercredi 14 novembre 2001 Statut Membre Dernière intervention 1 septembre 2008
28 mars 2002 à 19:23
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
apientry Messages postés 16 Date d'inscription mardi 26 mars 2002 Statut Membre Dernière intervention 20 juillet 2002
5 avril 2002 à 10:36
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
0
petronius Messages postés 14 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 1 juillet 2005
22 juin 2003 à 12:20
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....
0
freekid Messages postés 55 Date d'inscription dimanche 19 septembre 2004 Statut Membre Dernière intervention 8 mai 2011
26 sept. 2004 à 11:15
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
0
Artiste_Gunm Messages postés 33 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 22 juillet 2008
22 mars 2005 à 09:17
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
0
Rejoignez-nous