Probleme d'EditBox

Résolu
SergentP Messages postés 20 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 25 juillet 2010 - 30 juin 2008 à 18:54
cs_lol55 Messages postés 86 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 5 décembre 2010 - 18 juil. 2008 à 22:11
Salut,
J'ai créer une fenêtre avec un edit box et je cherche à le redimensionner lorsque un WM_SIZING est envoyé, pour cela jutilise SetWindowPos comme ceci :

SetWindowPos( EditText_Bas, 0,
                     RectWindow.left,   // Position de départ
                     RectWindow.top,    // ...
                     RectWindow.right, // ...
                     RectWindow.bottom - Diff.bottom, 0); // Position de départ - la différence apres le WM_SIZING

La compilation se passe bien mais lorsque je redimentione l'edit box disparait.
Je n'arrive pas à trouver de réponse à ce probleme donc j'espere trouver une solution de votre par.
Merci d'avance.

12 réponses

cs_lol55 Messages postés 86 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 5 décembre 2010
7 juil. 2008 à 18:36
Effectivement cela permet de modifier la zone d'écritue.

Je viens de créer un nouveau projet pour essayer de résoudre ton problème, je te laisse lire attentivement ce code :

case WM_CREATE:
                hEditBox = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "", WS_CHILD | WS_VISIBLE | ES_LEFT, 15, 15, 120, 25, hFenetre, 0, instance, 0);
                   
            SendMessage(hEditBox, WM_SETTEXT, 0, (LPARAM) "Lyon !");
                hButton = CreateWindow("BUTTON", "Click", WS_CHILD | WS_VISIBLE,
        5, 45, 383, 30, hFenetre, (HMENU) ID_BUTTON, instance, NULL);
            return 0;

        case WM_COMMAND:
            switch(LOWORD(wParam))
            {
                case ID_BUTTON:
                    SetWindowPos(     
                        hEditBox,
                        0,
                        0,
                        0,
                        80,
                        25,
                        SWP_NOMOVE
                    );
                    break;
            }
            return 0;

Lorsque je clique sur le bouton Click, les dimensions de l'EditBox sont bien modifiées, la fonction SetWindowPos fonctionne donc bien.
Je relis ton premier post et je vois les paramtres que tu utilises :

SetWindowPos( EditText_Bas, 0,
                     RectWindow.left,   // Position de départ
                     RectWindow.top,    // ...
                     RectWindow.right, // ...
                     RectWindow.bottom - Diff.bottom, 0); // Position de départ - la différence apres le WM_SIZING

Je pense donc que ton problème viens simplement des paramètres de dimensions que tu utilises, il doit peut-être y en avoir des négatives... ce qui fais que ton EditBox n'est plus affichée, ce qui est normal !
Montre moi ton code source dans un fichier .cpp; j'essaierais de corriger ton problème en utilisant les bons paramètres.

lol55
3
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
30 juin 2008 à 19:10
Salut,
Essaye ca: InvalidateRect(EditText_Bas, 0, 1);

Neo_Fr
0
SergentP Messages postés 20 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 25 juillet 2010
1 juil. 2008 à 11:23
Non, ça ne marche pas, l'edit disparait toujours.
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
1 juil. 2008 à 15:41
Salut,

Le dernier param de SetWindowPos() c'est les flags, regarde sur msdn les valeurs à mettre à la place de 0.
0

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

Posez votre question
SergentP Messages postés 20 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 25 juillet 2010
1 juil. 2008 à 20:18
Pas moyen j'ai essayé plusieurs flags mais la fenetre disparait toujours, j'ai donc essayé de mettre des coordonées au hazard et la la fenetre ne disparaisait pas donc je supose que ca vien de la maniere d'ont je passe les coordonées.
0
cs_lol55 Messages postés 86 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 5 décembre 2010
7 juil. 2008 à 15:04
Salut SergentP,

Pour redimensionner un  EditBox, j'utiliserai le message EM_SETRECT qui permet comme tu peux le lire dans la description des paramètres à passer, de modifier ses dimensions :
* lParam :
A pointer to a RECT structure that specifies the new dimensions of the
rectangle. If this parameter is NULL, the formatting rectangle is set
to its default values.
Voici le page, sur la MSDN : http://msdn.microsoft.com/en-us/library/bb761657(VS.85).aspx
(Pour déclarer ton nouveau RECT => http://msdn.microsoft.com/en-us/library/ms536136.aspx)
Donc en faisant :

RECT rRect;
rRect.top = ...
... // Tu déclares les dimensions (top, bottom, left et right)
SendMessage(hHandleTonEditBox, EM_SETRECT, 0, rRect);

Dans la page de la MSDN, tu peux trouver des choses intéressantes comme dans la remarque :
    The EM_SETRECT message causes the text of the edit control to be
redrawn. To change the size of the formatting rectangle without
    redrawing the text, use the EM_SETRECTNP message.

Si cela ne fonctionne pas, tu peux essayer de voir avec le message EM_SETMARGINS (http://msdn.microsoft.com/en-us/library/bb761649(VS.85).aspx)

Voilà si tu as encore besoin d'aide n'hésite pas !
0
SergentP Messages postés 20 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 25 juillet 2010
7 juil. 2008 à 16:06
Et bien écoute je te remercie pour ta réponse je vais aller tester ca !
0
SergentP Messages postés 20 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 25 juillet 2010
7 juil. 2008 à 16:36
j'ai regardé ici : http://msdn.microsoft.com/en-us/library/bb761657(VS.85).aspx mais apparament EM_SETRECT c'est pour modifier la zone d'écriture :s.
0
SergentP Messages postés 20 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 25 juillet 2010
7 juil. 2008 à 19:37
En fait oui cela venait des parametres de dimentions et pensse que c'est à cause du RECT car il a pour parametre      : left, top, right, bottom
et SetWindowPos ou MoveWindow : left, top, width, height
Ce qui créer des problemes.
0
cs_lol55 Messages postés 86 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 5 décembre 2010
8 juil. 2008 à 08:57
Ton problème est donc résolu ?
0
SergentP Messages postés 20 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 25 juillet 2010
8 juil. 2008 à 18:28
Le problème de départ est résolu oui, j'ai tout repris à zéro et c'est bon
0
cs_lol55 Messages postés 86 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 5 décembre 2010
18 juil. 2008 à 22:11
OK !
0
Rejoignez-nous