Modifier un Edit

Résolu
Ziman Messages postés 245 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 septembre 2008 - 22 août 2006 à 02:59
Ziman Messages postés 245 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 septembre 2008 - 22 août 2006 à 16:47
Bonjour,

mon problème est simple. J'ai ma fenetre principale qui contient un edit et un bouton. Le bouton fait apparaitre une DialogBox avec la même configuration. Je voudrai que quand je clique sur le bouton de la DialogBox, le contenu de l'edit de celle-ci se mette dans l'edit de la feuille principale.

J'ai essaye un SetWindowText, en vain. J'ai aussi essayé un SendMessage avec WM_SETTEXT et ca marche pas non plus, ca renvoie False.

Quelqu'un pourrait m'éclairer ? merci

["http://ziman4000.free.fr" www.vb6team.fr.st]

16 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
22 août 2006 à 16:41
Tu redéclares un HWND hTB dans WindowProcedure, ce qui masque le hTB global. Le hTB global n'est donc pas initialisé. Il faut enlever le hTB local dans WindowProcedure et c'est gagné

_____________________________________
Un éditeur de ressources gratuit pour Windows
3
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
22 août 2006 à 03:14
Si t'as nouvelle Dialog est enfant de ta dialog principale, récupère le handle de ton édit avec GetParent et GetDlgItem tu pourras alors utiliser SendMessage ou SetWindowText

ULARGE_INTEGERJokyQi=QI("Joky"
0
Ziman Messages postés 245 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 septembre 2008
22 août 2006 à 03:41
Elle n'est pas parent, enfin, je ne pense pas, mais de toute façon le handle de mon TextBox est déclaré comme global et depuis ma DialogBox, j'ai accès à celui-ci, le soucis ce n'est pas le Handle mais le fait que le texte ne veut pas se changer. J'ai été voir sur MSDN qui me dit pour SetWindowText :

To set the text of a control in another process, send the WM_SETTEXT message directly instead of calling SetWindowText.

Je me dit que c'est pour ca que SetWindowText ne marche pas. J'ai donc essayé le SendMessage avec WM_SETTEXT et voici ce que MSDN me dit :

The return value is TRUE if the text is set. It is FALSE (for an edit control)...

Donc apparemment ca ne marche pas pour un edit ... Que faire alors ?

["http://ziman4000.free.fr" www.vb6team.fr.st]
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
22 août 2006 à 13:50
Met c'est pas un autre processus si ?
Sinon c'est ptète la façon dont tu récupères le texte dans le nouvel Edit
Place des messagesBox un peu partout pour voir où tu en es. ;)

ULARGE_INTEGERJokyQi=QI("Joky"
0

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

Posez votre question
cs_chris91 Messages postés 54 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 4 avril 2007
22 août 2006 à 15:11
bonjour,

MSDN SetWindowText Function :
If the function fails, the return value is zero. To get extended error information, call GetLastError.

quel est le code erreur renvoyé ?
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
22 août 2006 à 15:31
Salut,
Montre-nous ton code complet si c'est possible.
0
Ziman Messages postés 245 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 septembre 2008
22 août 2006 à 16:13
chris91 > Elle renvoie 0.

racpp tout le code ca va etre dur mais voilà l'essentiel :

en global :

static HWND hTB;

la création :

            hTB = CreateWindow("edit", "",
                               WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL ,
                               10, 220, 100, 20, hwnd,
                               (HMENU) 2, GlobalInstance, NULL);

L'appel :

                    case 3:

                        if (SendMessage(heEdit, WM_GETTEXTLENGTH, 0, 0) == 0) {
                            MessageBox (hwDlg, "Veuillez entrer un texte", "Erreur", MB_OK | MB_ICONERROR);
                        }
                        else
                        {
                            int index = SendMessage(hLB, LB_GETCURSEL, 0, 0);
                            SendMessage(hLB, LB_DELETESTRING, index, 0);
                            char *Texte = (char *) malloc (SendMessage(heEdit, WM_GETTEXTLENGTH, 0, 0) + 1);
                            GetWindowText(heEdit, Texte, SendMessage(heEdit, WM_GETTEXTLENGTH, 0, 0) + 1);
                            SendMessage(hLB, LB_INSERTSTRING, index, (LPARAM)Texte);
                           
                            SetWindowText(hTB, "jnnnnnn");

                            free(Texte);
                            EndDialog(hwDlg, 0);
                        }
                        break;

Ici j'ai mis "jnnnnnn" juste pour tester avec du texte simple.

["http://ziman4000.free.fr" www.vb6team.fr.st]
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
22 août 2006 à 16:18
char szText[1024] = 0;

GetWindowText(hEdit, szText, 1024);
if(szText[0] = 0)
    MessageBox(0, "Aucun texte", 0, 0x40);
else
    SetWindowText(hAutreEdit, szText);

ULARGE_INTEGERJokyQi=QI("Joky"
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
22 août 2006 à 16:23
char szText[1024] = 0;
Pas bien :)

La ligne SetWindowText(hTB, "jnnnnnn"); renvoie 0, c'est ca?

Que renvoie IsWindow(hTB)?

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
Ziman Messages postés 245 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 septembre 2008
22 août 2006 à 16:27
C'est bizarre mais ca me renvoie 0. Ce que je ne comprend pas c'est que je fais aussi des opérations sur une ListBox depuis le meme bouton et pour la ListBox, ca marche à merveille mais pas pour le TextBox ...

["http://ziman4000.free.fr" www.vb6team.fr.st]
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
22 août 2006 à 16:31
Faudrait que tu nous donne un code complet illustrant de code. Essaie d'enlever le plus de choses possible de ton code pour garder juste ce qui ne marche pas, et reposte

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
22 août 2006 à 16:33
Pourquoi c'est pas bien ??? :o

ULARGE_INTEGERJokyQi=QI("Joky"
0
Ziman Messages postés 245 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 septembre 2008
22 août 2006 à 16:35
Je ne programme en API WIN32 que depuis 2 jours, donc soyez indulgent sur la qualité du code :

Code

["http://ziman4000.free.fr" www.vb6team.fr.st]
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
22 août 2006 à 16:37
Joky> error C2075: 'szText' : l'initialisation d'un tableau nécessite des accolades

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
22 août 2006 à 16:39
ah ouai :'(
oups

ULARGE_INTEGERJokyQi=QI("Joky"
0
Ziman Messages postés 245 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 septembre 2008
22 août 2006 à 16:47
Ah ... Je n'avais pas fait attention à cela, j'ai du me tromper de touche pour faire le couper coller car je pensais l'avoir enlevé de la déclaration locale.

Bete erreur mais merci de m'avoir aidé.

["http://ziman4000.free.fr" www.vb6team.fr.st]
0
Rejoignez-nous