PeekMessage, PreTranslate, KEY_DOWN. Argggg......

BarthOlivier Messages postés 132 Date d'inscription mercredi 6 mars 2002 Statut Membre Dernière intervention 27 novembre 2012 - 25 nov. 2003 à 09:45
BarthOlivier Messages postés 132 Date d'inscription mercredi 6 mars 2002 Statut Membre Dernière intervention 27 novembre 2012 - 5 déc. 2003 à 13:24
Salut à tous ....

J'ai un petit souci avec la gestion des touches...

J'ai fait une appli (VC++) avec une dialogBox... J'ai plein de boutons partout. Pour faciliter l'utilisation, j'ai créé un Accelerator. tout fonctionne très bien quand je suis dans mon mode normal...

En appuyant sur un bouton, je commence a faire de l'acquisition de données et les affiche... Toujours pas de prob. Pour avoir une interaction avec ma boite je me suis crée une fonction DoEvents(), que j'appele regulierement dans ma boucle principale, permettant de gerer les différent message WM_PAINT etc ...

PB : Apparament la gestion des raccourci n'est pas filtrée par la fonction PeekMessage(...). Je voudrai pouvoir incrémenter ou décrementer des variables alors que ma boucle principal est en cours...
Je peux modifier sans probleme ces variables en cliquant sur les boutons avec la souris, mais impossible d'intercepter un Message de type KEY_DOWN ou autre truc de ce genre...

Quelqu'un a une idée a me suggerer (ou mieux une solution toute faite ....) ???

Merci à tous...

9 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 nov. 2003 à 09:57
Tu appelles PeekMessage dans une boucle longue ?
Passe ta boucle dans un thread et gere ta fenetre normalement sans PeekMessage.
BruNews, ciao...
0
BarthOlivier Messages postés 132 Date d'inscription mercredi 6 mars 2002 Statut Membre Dernière intervention 27 novembre 2012 1
3 déc. 2003 à 21:37
Merci pour ton aide....

Je croyais pas que ce serai si pratique... J'ignorai meme jusqu'a ce genre de fonctions.... (Un peu NewBit le gars, faut bien commencer)

NB : Une question en passant : Est ce que lorsqu'on crée un thread, dans une appli, il est possible de la maintenir active après la fermeture du soft ???
PAs d'idée particuliere juste comme ca ?

Merci...
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 déc. 2003 à 21:43
Ton processus ne se terminera QUE quand TOUS ses threads seront retournes, pas avant.
BruNews, ciao...
0
BarthOlivier Messages postés 132 Date d'inscription mercredi 6 mars 2002 Statut Membre Dernière intervention 27 novembre 2012 1
3 déc. 2003 à 22:14
Cela veux donc dire que si j'initialise un(plusieurs) threads dans une appli, et que je la ferme (l'appli), tous les threads (non terminés ou non intérrompus) seront présents jusqu'a qu'ils soient terminés (ou arretés ) ???
0

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

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 déc. 2003 à 22:23
Clair je ce que je t'ai dit, tu fermeras la fenetre mere de ton prog, tant que TOUS les threads de ton progs ne seront pas retournes, ton processus (le prog) ne sera pas reellement ferme et donc sera encore present dans la liste des taches.
BruNews, ciao...
0
BarthOlivier Messages postés 132 Date d'inscription mercredi 6 mars 2002 Statut Membre Dernière intervention 27 novembre 2012 1
3 déc. 2003 à 22:44
Merci pour tes conseils eclairés.....

Vu ton palmares... (messages,sources), il est clair que tu es de grand conseil
(un peu de pommade et de flatteries au cas ton aide serait encore requise ..... )

MErci et @+
0
BarthOlivier Messages postés 132 Date d'inscription mercredi 6 mars 2002 Statut Membre Dernière intervention 27 novembre 2012 1
4 déc. 2003 à 20:27
J'ai mis en application les threads dans mon soft, aujourd'hui... J'ai un gros probleme. Malgrès le changement de priorité, c'est très lent . Y'a quelque chose que j'initialise mal ????

J'ai crée une fonction que j'appelle soit directement (avec des peekmessages en boucle) a qui j'envoi l'adresse complete de la class ("this") afin de dessiner sur une Dialog...

Cette meme fonction, (ou j'ai enlevé la gestion des message PeekMEssage), je la lance en tant que thread, je lui accorde un maximum de priorité....

Au final, le rendu graphique est beaucoup plus lent avec une thread, qu'avec une boucle longue et des Peekmessage en boucle)...

Ou est mon problème ???
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 déc. 2003 à 20:41
Si le graphique est traite de la meme maniere dans le thread que quand il etait dans la boucle d'origine, aucune raison que soit plus long. Tu devrais retrouver la meme boucle dans le thread.
Pour ce qui est des 'this' ou autre MFCtrie, pas mon domaine.
BruNews, ciao...
0
BarthOlivier Messages postés 132 Date d'inscription mercredi 6 mars 2002 Statut Membre Dernière intervention 27 novembre 2012 1
5 déc. 2003 à 13:24
Alors je comprend pas ....
j'ai pris ma fonction d'origine et je l'ai mise dans ma thread... Le code n'a pratiquement pas changé. (Juste quelques variables alors inutile que j'ai enlevées et mes DoEvents (enfin PeekMessage)....)

Le resulstat est perceptible, Mais vu que je fait un oscillo, le taux de raffraichissement est genant...

serait-ce le fait des recuperer des info sur une voie USB qui ralentirai ??? Sa gestion ( ma DLL) s'en verait-elle affectée dans une Thread... ???

C'est embettant d'autant plus que l'utilisation d'une Thread, me reglais mes problemes d'interception de message...

Si quelqu'un a une idée !!!!!!!!!!!!!!!
0
Rejoignez-nous