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

Signaler
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
-
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
-
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

Messages postés
354
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
24 mars 2011
1
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
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
3
Merci, je vais essayer.

A+






Nico
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
3
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
Messages postés
354
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
24 mars 2011
1
Dans ce cas, lance ton traitement dans un thread avec CreateThread.

D@runia
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
3
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
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
3
Où pourrais-je trouver des tutoriaux simples expliquant comment, créer et utiliser des Thread?

<hr />

Merci d'avance et à bientôt.

Nico
Messages postés
240
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
22 mars 2009

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
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
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++
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
13
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.
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
3
Merci pour ces réponses, je vais essayer de voir.
a+









Nico