Besoin d'aide avec la souris

ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 - 15 juin 2007 à 22:12
racpp Messages postés 1910 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 - 18 juin 2007 à 00:44
Bonjour,

Comment faire pour qu'une fenêtre parent (hwnd dans l'exemple ci-dessous) sache lorsque la souris de l'utilisateur passe sur un de ces contrôles (static,edit...) ?
Mes contrôles sont déclarés ainsi :
Wnd01 = CreateWindowEx(0, "STATIC",  "", WS_VISIBLE|WS_CHILD,  10,  10, 400,  20, hwnd, 0, NULL, NULL );

...En C API Win32...

<hr />Merci d'avance et à bientôt.

Nico

5 réponses

racpp Messages postés 1910 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 15
15 juin 2007 à 23:18
Salut,
Une solution consiste à sous-classer les controles. Dans la procédure de sous-classement tu interceptes le message WM_MOUSEMOVE (pour les EDITs) ou WM_NCHITTEST (pour les STATICs) avant de les renvoyer à la fenêtre mère sous forme de message personnalisé. Tout dépendra ensuite de ce que tu veux faire exactement.
0
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
15 juin 2007 à 23:24
Bonjour racpp,

Si je comprend bien votre réponse, il faudrait que je crée une procédure pour chaque type de contrôles.
Est-ce celà?

Je voulais seulement intercepter ces messages pour afficher, dans la barre de status de la fenêtre principale, l'action des boutons, le contenu des champs...

<hr />Merci d'avance et à bientôt.

Nico
0
racpp Messages postés 1910 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 15
15 juin 2007 à 23:52
Si tu veux intercepter WM_NCHITTEST tu peux utiliser une seule procédure pour tous les controles. Via ton message personnalisé, la fenêtre mère recevra le HWND du controle survolé par le curseur de la souris. Avec GetWindowText(), tu récupères le texte du controle avant de l'afficher dans la StatusBar. Si tu veux afficher le role des boutons, tu peux utiliser un switch() sur les identificateurs des boutons pour ensuite afficher dans la StatusBar le texte correspondant dans chaque case.
0
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
17 juin 2007 à 22:39
Bonjour,
Enxore merci pour votre aide.
J'essaierai d'exploiter cette technique plus tard mais n'y aurait-il pas un moyen pour que la fenêtre parent recoive immédiatement un message lorsque la souris survolle un de ses controles?

<hr />

Merci d'avance et à bientôt.

Nico
0

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

Posez votre question
racpp Messages postés 1910 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 15
18 juin 2007 à 00:44
Je ne connais pas d'autre moyen.
0