BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 15 nov. 2005 à 22:46
pourquoi VirtualAlloc: parce que c'est écrit API dans la question, rien de plus.
#define MSGAVANCE (WM_USER + 100)
dans thread tu fais des PostMessage(hwndcible, MSGAVANCE, 0, 0);
que tu traites dans la fenetre pour dessiner avancement, ainsi tu gardes la séparation.
jul39dole
Messages postés117Date d'inscriptionmardi 22 juillet 2003StatutMembreDernière intervention21 janvier 2011 15 nov. 2005 à 20:25
Après test, avec ou sans le Sleep, cela ne change rien.
Il faut en effet que l'affichage de la progression se fasse dans le thread.
Comment dois-je faire ? Exporter mes handles de la thread? et envoyer des messages PAINT pour redessiner la fenêtre ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 15 nov. 2005 à 20:55
Clair que ce n'est pas Sleep par lui même qui bloque mais bien sur la boucle.
Donne hwnd de progressBar ou autre au thread, soit par une var globale soit en param du thread.
Par un pointeur de struct, on peut passer 1000 params au thread si on veut. Attention toutes fois qu'en cas de struct, elle ne doit pas être sur pile et disparaitre illico après appel de CreateThread sinon badaboum. Fais un VirtualAlloc au besoin, caste en une struct et passe au thread, thread fera un VirtualFree sur son param en sortie et tout ira bon.
jul39dole
Messages postés117Date d'inscriptionmardi 22 juillet 2003StatutMembreDernière intervention21 janvier 2011 15 nov. 2005 à 22:13
heu je passe déjà un pointeur sur une classe à mon thread, donc je vais inclus les hwnd dans ma classe.
Pourquoi un VirtualAlloc plutot qu'un simple new ?
jul39dole
Messages postés117Date d'inscriptionmardi 22 juillet 2003StatutMembreDernière intervention21 janvier 2011 15 nov. 2005 à 22:31
mais en fait le pb c'est qu'il faut séparer le programme en deux parties :
- une partie interface graphique
- une partie noyau
en donc en s'occupant de l'interface dans le kernel, la séparation n'est plus aussi nette...