Empêcher la mention "pas de réponse"

ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 - 23 août 2007 à 16:13
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 - 27 août 2007 à 15:28
Bonjour,

Le titre n'est peut-être pas très explicite.
Je vous explique ma situation, lorsque mon programme recois le message WM_CONTROL, IDOK, il fait appel à une fonction necessitant beaucop de temps.
Pendant l'exécution de cette fonction, windows croyant la fenêtre inactive affiche la mention "pas de réponse" alors que le programme fonctionne belle et bien et finit même son opération.
Comment empêcher windows d'afficher ce message alors que le programme fonctionne?

<hr />

Merci d'avance et à bientôt.

Nico

10 réponses

cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
23 août 2007 à 16:22
Salut,

Le problème c'est que pendant ton traitement, les messages ne sont pas gerés par ta fenetre. Rajoute ça apres ton CreateWindow :

    while (GetMessage(&msg, hWndDeTaFenetre, 0, 0))
    {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
    }

D@runia
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
23 août 2007 à 16:25
Merci, je vais essayer.

A+






Nico
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
23 août 2007 à 16:31
Bonjour,


Je viens de m'apercevoir que je possedais déjà un code dans le genre :
while (GetMessage(&msg, NULL, 0, 0)) {
         if (!TranslateAccelerator(hwndPrinc, haccel, &msg)) {
              TranslateMessage(&msg);
              DispatchMessage(&msg);
         }
}

Faut-il que je laisse le message ainsi ou bien que je change quelques chose?
Pour information j'utilise des raccourcis clavier (accelerator)...






<hr />




Merci d'avance et à bientôt.







Nico
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
23 août 2007 à 16:46
Dans ce cas, lance ton traitement dans un thread avec CreateThread.

D@runia

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

Posez votre question
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
23 août 2007 à 16:51
Merci,
Mais comment faire celà?
Ai-je seulement besoin d'appeler CreateThread? Et si oui à quel moment?

<hr />




Merci d'avance et à bientôt.






Nico
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
23 août 2007 à 16:56
Où pourrais-je trouver des tutoriaux simples expliquant comment, créer et utiliser des Thread?

<hr />

Merci d'avance et à bientôt.

Nico
cs_omnia Messages postés 240 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 22 mars 2009
23 août 2007 à 20:00
Salut et bien sur le site tu as tout un tas d'explication pour les threads

regarde dans mes sources en général j'utilise les threads, je pense que la source http://www.cppfrance.com/codes/WIN32-DEV-CPLUSPLUS-SPLITALL-GESTIONNAIRE-DECOUPAGE-RECOLLAGE-FICHIERS_43036.aspx

devrais t'aider

PS: ici dans le cas de simple thread si tu veux faire du multi thread (type un scanner ip/port) il te faudra lire des cours sur les semaphore, mutex, zone critique, etc ...

dans le cas présent je pense que les fonctions :

CreateThread,
GetExitCodeThread
TerminateThread

pour plus d'info la msdn
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
23 août 2007 à 22:14
Richter explique tout cela en détails avec exemples:
http://brunews.com/brunews/download/JR4.zip
http://brunews.com/brunews/download/JR4Sources.zip

ciao...
BruNews, MVP VC++
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
24 août 2007 à 13:41
Salut,

Une alternative au thread est de faire un traitement des messages non bloquant dans la boucle du traitement long (Déjà faut qu'il ait une boucle...).

cf ce source.
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
27 août 2007 à 15:28
Merci pour ces réponses, je vais essayer de voir.
a+









Nico
Rejoignez-nous