Subclassing

Résolu
dowichat Messages postés 8 Date d'inscription lundi 5 mai 2003 Statut Membre Dernière intervention 1 octobre 2004 - 1 oct. 2004 à 00:43
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 1 oct. 2004 à 09:13
Bonjours,

Je fais du subclasing pour intercepter des messages de windows, mais j'aimerait avoir la possibilité de faire du subclassing sur certain message de windows et laisser windows gèrer les autres message. Ceci est facile a faire mais mon problème est que quand je fais du pas a pas avec F8 le subclassing fais une boucle pour l'interception des message et j'aimerait qu'il n'y est pas de boucle. exemple:

Private Sub Form_Load()
OldProc = SetWindowLong(form1.hwnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub

Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case uMsg
Case message a intercepter
traitement
End Select
'ICI ON DIT A WINDOWS DE GÈRER LES AUTRE MESSAGE CE QUI FAIS FAIRE LA BOUCLE DE WINDOWPROC
WindowProc = CallWindowProc(OldProc, hwnd, uMsg, wParam, lParam)
End Function

Qand j'appuis sur F8 la sub form_load début et insère dans une variable oldproc lancienne procédure de windows.

Si je continue en appuyant sur F8 la function windowproc va faire une boucle sur toute les messages de mon programme mais moi jaimerait que la function windowproc soit déclancher par un évenement précis comme un click droit sur la form et que quand le traitement que je lui dit est fais, qu'il ne continue pas la boucle du windowproc mais qu'il attende que je fasse un click a nouveau pour revenir dans la funtion windowsproc.

Es ce possible ??? Si oui merci d'avance de me l'apprendre.

2 réponses

jpthomasset Messages postés 95 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 20 avril 2010
1 oct. 2004 à 08:47
Le principe de cette fonction est d'etre appelé tout le temps. Si tu as besoin de gerer certains messages, il te suffit de les identifier.

Par contre tu ne peux pas spécifier les messages pour lesquels cette fonction WindowProc est appelé.

Maintenant, tu peux aussi utiliser un controle du genre de celui de VbAccelerator qui te permet de faire du subclassing, et surtout celui-ci te permet de filtrer les messages que tu veux recevoir.

A+,
JP.
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 75
1 oct. 2004 à 09:13
Tu ne peux pas le faire directement.

Tu peux utiliser ma Dll. Il t'es possible de spécifier les messages qui t'interessent, et de faire certaines choses interessantes

http://www.vbfrance.com/code.aspx?ID=19625

car le Pas à Pas dans VB est pas conseillé si tu utilise pas de Dll. L'IDE est assez instable.

Amusez-vous ! ;)
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS
3
Rejoignez-nous