Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Probelem de mise a jour dans une EditBox [ Windows / MFC ] (Quazar)

mardi 5 septembre 2006 à 12:10:21 | Probelem de mise a jour dans une EditBox

Quazar

Salut

Je suis MSVC++2005.
J ai un probleme lorsque j'essaie de mettre un controle (editBox) a jour. Il m'écrit mes string les uns par dessus les autres ?
Je pense que j ai omis quelque chose quelque part. Est ce que quelqu'un pourrait me renseigner ?

J'ai utilisé plusieurs méthodes pour parvenir à mes fins, sans succés...

void frmSplash::setTxt(char *psTxt){
    if(psTxt != NULL){
        SetDlgItemTextA(IDC_SPLASH_EDIT, psTxt);
        UpdateWindow();
      }
}
   




Vers l'infini et au delà... [Q]

mardi 5 septembre 2006 à 12:12:42 | Re : Probelem de mise a jour dans une EditBox

DeAtHCrAsH

SI tu as coché les styles ownerdraw, enleve les.

Shell

mardi 5 septembre 2006 à 12:32:57 | Re : Probelem de mise a jour dans une EditBox

Quazar

Je te remercie d etre venue si vite a mon secours.

Je ne vois pas vraiment de quoi tu parles. Je ne me rappelles pas avoir vu 'ownerdraw' quelque part en fait.

Par ailleurs, j'ai été maladroit dans l énoncé de mon probleme. Hormis la faute de frappe que j'ai fait dans le titre, j'ai oublié de préciser que mon EditBox etait en mode ReadOnly et que j'avais rendu transparente en interceptant le message de colorisation des controles:

...
        case CTLCOLOR_EDIT:
            pDC->SetBkMode(TRANSPARENT);
            hbr = (HBRUSH)GetStockObject(NULL_BRUSH);
            break;


Vers l'infini et au delà... [Q]

mardi 5 septembre 2006 à 12:44:29 | Re : Probelem de mise a jour dans une EditBox

BruNews

Administrateur CodeS-SourceS
en readonly, c'est le message WM_CTLCOLORSTATIC.

ciao...
BruNews, MVP VC++

mardi 5 septembre 2006 à 12:48:01 | Re : Probelem de mise a jour dans une EditBox

Quazar

Oui j ai vu, j les également rajouté. Mais ca ne change rien. Les textent se supperposent. J'ai aussi essayé de réaffecter le mode TRANSPARENT au contexte de mon EditBox en vain :

void frmSplash::setTxt(char *psTxt){
    if(psTxt != NULL){
        CEdit *txtTmp = (CEdit *)GetDlgItem(IDC_SPLASH_EDIT);
        CDC *pDC = txtTmp->GetDC();
        pDC->SetBkMode(TRANSPARENT);
        txtTmp->SetWindowTextA(psTxt);
        UpdateWindow();
    }
}

Il faudrait peut etre que j efface le fond et que je le remette TRANSPARENT apres.



Vers l'infini et au delà... [Q]

mardi 5 septembre 2006 à 12:54:05 | Re : Probelem de mise a jour dans une EditBox

BruNews

Administrateur CodeS-SourceS
Pas besoin de tout cela (surtout GetDC(), en API manquerait ReleaseDC()):

SetWindowText
Traitement de WM_CTLCOLORSTATIC

devraient normalement suffire.

ciao...
BruNews, MVP VC++

mardi 5 septembre 2006 à 16:19:05 | Re : Probelem de mise a jour dans une EditBox

Quazar

Excusez moi d'avoir pris du temps pour répondre (repas + coupre d'électrécité, le bonheur quoi).

En fait je me suis rendu compte que je vous avais aiguillé sur un faux probleme. Je croyais que mon probleme venait de l'apparence de mon EditBox, et que donc la solution venait de mon contexte graphique. De là, nous nous sommes concentré sur la transparence de mon controle.

Je me suis aperçu que mon probleme ne venait pas forcément de là.
Ce que je ne vous ai pas dit c'est que je venais mettre a jour mon controle depuis ma fenetre parente. La fenetre ou se trouve l'EditBox étant ouverte non modalement.
Apres plusieurs test à la mord moi le noeud je me suis apercu que j'arrivais à mettre à jour ma fenetre en faisant ceci :

dlgAttente->ShowWindow(SW_HIDE);
dlgAttente->ShowWindow(SW_SHOWDEFAULT);
dlgAttente->SetDlgItemTextA(IDC_SPLASH_EDIT, "Toto is not a hero");
dlgAttente->UpdateWindow();

Du coup je me dis que c'est parce que je n'arrivais pas raffraichir ma fenetre comme il faut, que mon champ EditBox ne se met pas à jour correctement.

Je suis désolé de vous avoir fait cherché dans une mauvaise voix

Cependant je pense que vous situez peut etre mieux le probleme et que vous avez en tete une meilleur solution que la mienne ( ShowWindow(SW_HIDE); puis ShowWindow(SW_SHOWDEFAULT); ) Il doit certainement existé une fonction de raffraichissement plus habile que ce que je fais.



Vers l'infini et au delà... [Q]

mardi 5 septembre 2006 à 16:29:22 | Re : Probelem de mise a jour dans une EditBox

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
InvalidateRect()
mais bizzare que ne se rafraichisse pas seul.

ciao...
BruNews, MVP VC++

mardi 5 septembre 2006 à 17:11:27 | Re : Probelem de mise a jour dans une EditBox

Quazar

J'ai utilisé Invalidate() et ca fonctionne bien. Je te remercie.

Pour le non raffraichissement, il me semble avoir eu le même problème en VB a une époque. Et à bien y réfléchir, ce n'est pas plus mal que je force un OnPaint() de la fenêtre.

Merci encore.


Vers l'infini et au delà... [Q]



Cette discussion est classé dans : jour, editbox, pstxt, probelem


Répondre à ce message

Sujets en rapport avec ce message

Comment fait-on pour changer la police et la taille dans une editbox?? [ par Hakim ] merci d'avance.Hakim. débutant MFC : pb avec editbox multiline [ par robby ] bonjour,J'aimerais savoir comment faire pour rajouter des lignes dans une editbox multiline sans récupérer à chaque fois l'ancien contenu parce que mo Question sur EditBox [ par Kephren ] Pouet all !En fait voilà, je souhaite que lorsque qu'une Autocheckbox soit : cochée ou décochée, l'édit box de la même fenêtre soit avec l'option ES_R fichiers Includes à jour [ par Xaviou ] Salut.Je suis à la recherche de fichiers includes à jour (avec les fonctions W2000 et XP)Ou alors, comment fait-on poiur déclarer une fonction contenu Connaitre la position du curseur!!! [ par tormoj ] Salut tout le monde,je voudrais savoir comment on fait pour connaitre la position du curseur dans une EditBox?Et enfin comment on fait pour griser tou SetTextColor win32 [ par Mike ] Salut je voudrais pouvoir changer la couleur du texte d'une editBox en win32. et eventuellement la couleur de fond de l'editBox osi. Si quelqu'un pouv création de fichier [ par freeze ] Salut à tous,je voudrais créer un fichier qui reprendrai la date du jourPar exemple 0110022.zip pour un fichier zip du 01/10/2002En fait je voudrais é Prob de portée des EditBox ou autres [ par Goba ] Bon en gros, je crée ma fenetre principale puis plusieurs EditBox dans la fonction WinMain, et je voudrais que quand on modifie une des editbox, ca af Les Variables Dans VC6.0 [ par Funcky ] j'ai un prog fait avec le mfc app wizard de VC6.0, il contient une editbox, a laquelle j'attribue une variable par classwizard, mais je ne me rappele Créer editbox ou zone de texte avec du code [ par MegaMickx ] Salut,Comment fait-on pour créer une editbox ou zone de texte a un endroit donné sur une Cdialog uniquement avec du code.Je programme sous [VC++6]Merc


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,312 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.