OVH Cloud OVH Cloud

raffraichissement d'une fenetre sous Visual

2 réponses
Avatar
Anthony
Bonjour,
Je code actuellement sous Visual C++ 6 (SP6 pour le détail) un programme
qui traite des fichiers les uns après les autres, de manière assez rapide.
J'affiche l'avancement de ce traitement pour faire patienter
l'utilisateur (car sur 40 000 fichiers ca dure longtemps) mais cet
affichage est instable.

En effet, une classe recoit une référence sur la boite de dialogue
d'attente (qui, qu'elle soit ouverte en modale ou non ne change rien) et
mets à jours des informations de cette boite, et fait un
UpdateData(FALSE); pour mettre à jours ces informations.
Cela donne un code du genre :

bool CBD::Traitement(const char*, CDialog& d) {
[...]
d.info = ...;
d.UpdateData(FALSE);
[...]
}
Or dès que ma fenetre perd le focus ou que je tente de la bouger, plus
rien et elle n'est plus mise à jours. Avez vous une solution pour régler
ce problème ?
J'ai tenté avec des RedrawWindow() et des UpdateWindow() mais ca ne
change rien.

Autre petite chose j'ai lu dans les archives de ce forum la réponse à
l'une de mes questions qui était trouver le nombre de fichiers dans un
répertoire. Cela reste toujours impossible mis à part FindFirst()
FindNext() qui seraient inadmissibles dans mon cas ?

Merci d'avance

--
Anthony FLEURY

2 réponses

Avatar
Anthony
Anthony wrote:

Bonjour,
Je code actuellement sous Visual C++ 6 (SP6 pour le détail) un programme
qui traite des fichiers les uns après les autres, de manière assez rapide.
J'affiche l'avancement de ce traitement pour faire patienter
l'utilisateur (car sur 40 000 fichiers ca dure longtemps) mais cet
affichage est instable.

En effet, une classe recoit une référence sur la boite de dialogue
d'attente (qui, qu'elle soit ouverte en modale ou non ne change rien) et
mets à jours des informations de cette boite, et fait un
UpdateData(FALSE); pour mettre à jours ces informations.
Cela donne un code du genre :

bool CBD::Traitement(const char*, CDialog& d) {
[...]
d.info = ...;
d.UpdateData(FALSE);
[...]
}
Or dès que ma fenetre perd le focus ou que je tente de la bouger, plus
rien et elle n'est plus mise à jours. Avez vous une solution pour régler
ce problème ?
J'ai tenté avec des RedrawWindow() et des UpdateWindow() mais ca ne
change rien.

Autre petite chose j'ai lu dans les archives de ce forum la réponse à
l'une de mes questions qui était trouver le nombre de fichiers dans un
répertoire. Cela reste toujours impossible mis à part FindFirst()
FindNext() qui seraient inadmissibles dans mon cas ?

Merci d'avance




Oops, je viens de voir que deux threads répondaient à ma question je pense,
je vais tester... désolé thunderbird est vraiment peu pratique pour lire
les news.

Anthony
--
It's a bird.. It's a plane..
No, it's KernelMan, faster than a speeding bullet, to your rescue.
Doing new kernel versions in under 5 seconds flat..
-- Linus, in the announcement for 1.3.27
Avatar
Anthony
Anthony wrote:

Bonjour,


[...]
Désolé en lisant un peu le groupe je viens de voir que deux threads
répondaient à ma question. Thunderbird étant peu pratique pour les news je
ne les avais pas vu...

Anthony
--
It's a bird.. It's a plane..
No, it's KernelMan, faster than a speeding bullet, to your rescue.
Doing new kernel versions in under 5 seconds flat..
-- Linus, in the announcement for 1.3.27