Modifier un Edit [Résolu]

Messages postés
247
Date d'inscription
dimanche 27 avril 2003
Dernière intervention
26 septembre 2008
- 22 août 2006 à 02:59 - Dernière réponse :
Messages postés
247
Date d'inscription
dimanche 27 avril 2003
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]
Afficher la suite 

Votre réponse

16 réponses

Meilleure réponse
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
22 août 2010
- 22 août 2006 à 16:41
3
Merci
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

Merci vecchio56 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de vecchio56
Messages postés
1791
Date d'inscription
lundi 22 novembre 2004
Dernière intervention
31 janvier 2009
- 22 août 2006 à 03:14
0
Merci
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"
Commenter la réponse de cs_Joky
Messages postés
247
Date d'inscription
dimanche 27 avril 2003
Dernière intervention
26 septembre 2008
- 22 août 2006 à 03:41
0
Merci
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]
Commenter la réponse de Ziman
Messages postés
1791
Date d'inscription
lundi 22 novembre 2004
Dernière intervention
31 janvier 2009
- 22 août 2006 à 13:50
0
Merci
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"
Commenter la réponse de cs_Joky
Messages postés
54
Date d'inscription
jeudi 20 novembre 2003
Dernière intervention
4 avril 2007
- 22 août 2006 à 15:11
0
Merci
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é ?
Commenter la réponse de cs_chris91
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Dernière intervention
14 novembre 2014
- 22 août 2006 à 15:31
0
Merci
Salut,
Montre-nous ton code complet si c'est possible.
Commenter la réponse de racpp
Messages postés
247
Date d'inscription
dimanche 27 avril 2003
Dernière intervention
26 septembre 2008
- 22 août 2006 à 16:13
0
Merci
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]
Commenter la réponse de Ziman
Messages postés
1791
Date d'inscription
lundi 22 novembre 2004
Dernière intervention
31 janvier 2009
- 22 août 2006 à 16:18
0
Merci
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"
Commenter la réponse de cs_Joky
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
22 août 2010
- 22 août 2006 à 16:23
0
Merci
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
Commenter la réponse de vecchio56
Messages postés
247
Date d'inscription
dimanche 27 avril 2003
Dernière intervention
26 septembre 2008
- 22 août 2006 à 16:27
0
Merci
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]
Commenter la réponse de Ziman
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
22 août 2010
- 22 août 2006 à 16:31
0
Merci
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
Commenter la réponse de vecchio56
Messages postés
1791
Date d'inscription
lundi 22 novembre 2004
Dernière intervention
31 janvier 2009
- 22 août 2006 à 16:33
0
Merci
Pourquoi c'est pas bien ??? :o

ULARGE_INTEGERJokyQi=QI("Joky"
Commenter la réponse de cs_Joky
Messages postés
247
Date d'inscription
dimanche 27 avril 2003
Dernière intervention
26 septembre 2008
- 22 août 2006 à 16:35
0
Merci
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]
Commenter la réponse de Ziman
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
22 août 2010
- 22 août 2006 à 16:37
0
Merci
Joky> error C2075: 'szText' : l'initialisation d'un tableau nécessite des accolades

_____________________________________
Un éditeur de ressources gratuit pour Windows
Commenter la réponse de vecchio56
Messages postés
1791
Date d'inscription
lundi 22 novembre 2004
Dernière intervention
31 janvier 2009
- 22 août 2006 à 16:39
0
Merci
ah ouai :'(
oups

ULARGE_INTEGERJokyQi=QI("Joky"
Commenter la réponse de cs_Joky
Messages postés
247
Date d'inscription
dimanche 27 avril 2003
Dernière intervention
26 septembre 2008
- 22 août 2006 à 16:47
0
Merci
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]
Commenter la réponse de Ziman

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.