Conflit avec l'application et son dialogue

chehouani Messages postés 4 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 8 avril 2007 - 7 avril 2007 à 01:10
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 - 8 avril 2007 à 12:44
J'ai developpé une application MFC qui fait des calculs scientifiques. Les calculs démarent dans une boucle et j'affiche le résultat à chaque pas du calcul dans une fenêtre dialog. J'utilise la fonction         SetDlgItemText( IDC_T, (LPSTR)szBuf); pour afficher mon résultat progressivement. Toute seule, cette fonction n'affiche rien jusquà la fin de la boucle pour le dernier résultat. J'ai mis UpdateWindows après  SetDlgItemText( IDC_T, (LPSTR)szBuf) ça marche mais dès que je clik sur la fenêtre de dialogue où je passe à une autre application en cours mon programme s'arrête ! Merci de m'aider
hassouna

7 réponses

Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
7 avril 2007 à 01:47
Salut:

Ce geure de choses se passent lorsque j'essaye de dessiner sur une fenêtre hors de la section réservée au message WM_PAINT d'où je perd la persistance de dessin car le message WM_PAINT est évoqué lorsque le contenue de la zone client de l'application a besoin d'être redessiner.

Dans quelle partie du code tu fais l'affichage? Est ce c'est en OnPaint () ou non?


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 avril 2007 à 16:55
http://www.cppfrance.com/infomsg_SETDLGITEMTEXT-HWND-QUAND-HWND-EST-PAS-ACTIVE_595418.aspx



J'y disais: Traitements longs se font dans un thread séparé.

ciao...
BruNews, MVP VC++
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
7 avril 2007 à 19:04
Salut,

CWnd::SetDlgItemText() est utilisé pour l'init d'un controle.

CWnd::SetWindowText(szText)
OU
SendMessage(CWnd::_m_hWnd, WM_SETTEXT, 0, (LPARAM)szText);

marchent car ils raffraichissent eux-même le controle.
0
chehouani Messages postés 4 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 8 avril 2007
7 avril 2007 à 23:37
Salut, J'ai testé CWnd::SetWindowText(szText)
ou
 SendMessage(CWnd::_m_hWnd, WM_SETTEXT, 0, (LPARAM)szText);
C'est encore pire ! puisque l'affichage ne se fait plus. Moi je voudrais afficher dans un Cedit Dialog ID_Machin le résultat de mes calculs en boucle

En fait comment ça marche (Traitements longs se font dans un thread séparé.!) plus d'explication Merci

hassouna
0

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

Posez votre question
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
8 avril 2007 à 00:29
Salut:

Crées un Thread è l'aide de la fonction AfxBeginThread pour exécuter les calculs à la place du processus principal.


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
0
chehouani Messages postés 4 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 8 avril 2007
8 avril 2007 à 00:33
Salut,
comment et où il faut mettre AfxBeginThread ? Je suis scientifique mais un grand informaticien Merci




hassouna
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
8 avril 2007 à 12:44
Salut:

Bien sûr tu vas lancer le thread créé avec AfxBegibThread ou avec CreateThread quand tu as cueillis les données par exemple ou si appuie sur un bouton.



________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
0
Rejoignez-nous