SetWindowLong et form

olixelle Messages postés 506 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 3 mars 2008 - 25 sept. 2006 à 20:13
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 26 sept. 2006 à 09:51
Bonjour,

je reviens à la charge avec mes hooks.
J'ai une appli qui récupere les messages d'un recepteur infrarouge.
Pour recupérer les msg, je lance la fonction d'initialisation en passant en parametre le handle de mon formulaire principal:
IR_Open(handle_fenetre_principale, 0, False, 0)

Ensuite, je fais un setwindowlong pour intercepter les messages:
SetWindowLong(h, GWL_WNDPROC, Me.myCallback)

Tout ca marche très bien.

Le pb, c'est que si j'ouvre une form en showdialog à partir de mon form princiapale, les messages sont mis à la queue jusqu'à ce que j'ai fermé ma fenetre modale.

Question:
n'y a t il que les form & les controls qui ont des handles ou est il possible que je passe en parametre non pas le handle de ma fenetre mais le handle d'un méthode ou classe ?

Voila :)
Mercid 'avance :)

PS: c'est pas la pein de me proposer de remplacer showdialog par show, ca ne correspond pas à mes besoins :)

3 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
25 sept. 2006 à 21:19
Le but des feuilles modales étant de bloquer les messages windows à la fenêtre parentes, forcément, les messages s'accumulent dans la file d'attente de la fenêtre en question.

Un Handle, c'est un identifiant permettant de distinguer les fenêtres (et donc les contrôles, puisque les contrôles sont des fenêtres) les unes des autres. Donc les classes et les méthodes n'ont pas de handle. Par contre, essaye de voir s'il n'est pas possible de rediriger les messages vers la fenêtre modale le temps qu'elle est affichée, puis rétablir l'interception des messages par la fenêtre parent dès qu'elle est fermée...
olixelle Messages postés 506 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 3 mars 2008 2
25 sept. 2006 à 21:35
c effectivement une piste interressante...
mais je vois pas comment faire, le showdialog bloquera toujours les msg non ?

sinon je ferai un appli a part ...
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 sept. 2006 à 09:51
tu peux faire un Exe ActiveX...

il aura sa propre file de message (thread séparé)

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Rejoignez-nous