Modifier un Edit

[Résolu]
Signaler
Messages postés
245
Date d'inscription
dimanche 27 avril 2003
Statut
Membre
Dernière intervention
26 septembre 2008
-
Messages postés
245
Date d'inscription
dimanche 27 avril 2003
Statut
Membre
Dernière intervention
26 septembre 2008
-
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

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
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
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
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"
Messages postés
245
Date d'inscription
dimanche 27 avril 2003
Statut
Membre
Dernière intervention
26 septembre 2008

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]
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
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"
Messages postés
54
Date d'inscription
jeudi 20 novembre 2003
Statut
Membre
Dernière intervention
4 avril 2007

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é ?
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
Montre-nous ton code complet si c'est possible.
Messages postés
245
Date d'inscription
dimanche 27 avril 2003
Statut
Membre
Dernière intervention
26 septembre 2008

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]
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
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"
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
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
Messages postés
245
Date d'inscription
dimanche 27 avril 2003
Statut
Membre
Dernière intervention
26 septembre 2008

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]
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
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
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Pourquoi c'est pas bien ??? :o

ULARGE_INTEGERJokyQi=QI("Joky"
Messages postés
245
Date d'inscription
dimanche 27 avril 2003
Statut
Membre
Dernière intervention
26 septembre 2008

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]
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
Joky> error C2075: 'szText' : l'initialisation d'un tableau nécessite des accolades

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

ULARGE_INTEGERJokyQi=QI("Joky"
Messages postés
245
Date d'inscription
dimanche 27 avril 2003
Statut
Membre
Dernière intervention
26 septembre 2008

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]