C'est encore moi, bonjour,
Bon,
SetCursor(main);
SetWindowLong(diagnetkey, DWLP_MSGRESULT, TRUE);
ça marche très bien pour une procédure de dialogue.
J'ai maintenant le souhait de changer le curseur en main lors du survol d'un
bouton qui n'est plus dans une procédure de dialogue, j'ai essayé
SetCursor(main);
tout seul, ça ne marche pas,
j'ai quand même essayé comme dans la procédure de dialogue:
SetCursor(main);
SetWindowLong(diagnetkey, DWLP_MSGRESULT, TRUE);
ça marche à moitié, j'obtiens la main au survol du bouton, mais à la sortie
du survol du bouton le curseur ne redevient pas flèche, il faut pour cela
que j'aille survoler un autre contrôle de la même fenêtre.
A noter que ma fenêtre n'est pas tout à fait standard, elle ne se termine
pas par un: DefWindowProc mais par un DefMDIChildProc car c'est une fenêtre
fille d'une MDIClient.
......
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Roger
"Roger" a écrit dans le message de news: 50be652a$0$6453$
Petite amélioration: Maintenant sur le WM_SETCURSOR je teste d'abord si (HWND)wParam est bien le handle de mon bouton et si LOWORD(lParam) == HTCLIENT si les 2 conditions sont réunies je fait: SetCursor(main); return true;
Résultat: J'obtiens toujours la main quand je survole le bouton, par contre quand je sors du bouton, ça marche une fois sur deux, parfois le curseur redevient immédiatement flèche, parfois il reste sous forme de main jusqu'à ce que je survole un autre contrôle...
Ca n'est donc pas encore parfait, je rappelle que je suis dans une fenêtre fille de MDIclient
"Roger" <roger.girardon@wanadoo.fr> a écrit dans le message de news:
50be652a$0$6453$426a74cc@news.free.fr...
Petite amélioration:
Maintenant sur le WM_SETCURSOR
je teste d'abord si (HWND)wParam est bien le handle de mon bouton
et si LOWORD(lParam) == HTCLIENT
si les 2 conditions sont réunies je fait:
SetCursor(main); return true;
Résultat:
J'obtiens toujours la main quand je survole le bouton, par contre quand je
sors du bouton, ça marche une fois sur deux, parfois le curseur redevient
immédiatement flèche, parfois il reste sous forme de main jusqu'à ce que je
survole un autre contrôle...
Ca n'est donc pas encore parfait, je rappelle que je suis dans une fenêtre
fille de MDIclient
"Roger" a écrit dans le message de news: 50be652a$0$6453$
Petite amélioration: Maintenant sur le WM_SETCURSOR je teste d'abord si (HWND)wParam est bien le handle de mon bouton et si LOWORD(lParam) == HTCLIENT si les 2 conditions sont réunies je fait: SetCursor(main); return true;
Résultat: J'obtiens toujours la main quand je survole le bouton, par contre quand je sors du bouton, ça marche une fois sur deux, parfois le curseur redevient immédiatement flèche, parfois il reste sous forme de main jusqu'à ce que je survole un autre contrôle...
Ca n'est donc pas encore parfait, je rappelle que je suis dans une fenêtre fille de MDIclient
ça donne exactement le même résultat: le curseur devient main au survol, mais lorsque je sors du bouton ça dépend en fait de la vitesse à laquelle je sors, si j'en sors très lentement c'est OK le curseur redevient flèche, par contre si j'en sors un peu plus vite le curseur reste main jusqu'à ce que je survole un autre contrôle quelconque
ça donne exactement le même résultat:
le curseur devient main au survol, mais lorsque je sors du bouton ça dépend
en fait de la vitesse à laquelle je sors, si j'en sors très lentement c'est
OK le curseur redevient flèche, par contre si j'en sors un peu plus vite le
curseur reste main jusqu'à ce que je survole un autre contrôle quelconque
ça donne exactement le même résultat: le curseur devient main au survol, mais lorsque je sors du bouton ça dépend en fait de la vitesse à laquelle je sors, si j'en sors très lentement c'est OK le curseur redevient flèche, par contre si j'en sors un peu plus vite le curseur reste main jusqu'à ce que je survole un autre contrôle quelconque
Christian ASTOR
Roger a écrit :
Ca n'est donc pas encore parfait, je rappelle que je suis dans une fenêtre fille de MDIclient
Chez moi, ceci a l'air de marcher... => else { DefMDIChildProc (hwnd, message, wParam, lParam); return FALSE; }
Effectivement, en rajoutant le DefMDIChildProc avant le return false ça marche correctement c'est ça que je ne faisais pas. Par la même occasion je me suis rendu compte que les tests supplémentaires que je faisais par exemple sur le HTCLIENT ou le GetCursorPos ne me servaient à rien alors que j'ai vu plein d'exemples sur Internet qui les utilisent. Merci
Chez moi, ceci a l'air de marcher... =>
else
{
DefMDIChildProc (hwnd, message, wParam, lParam);
return FALSE;
}
Effectivement, en rajoutant le DefMDIChildProc avant le return false ça
marche correctement c'est ça que je ne faisais pas.
Par la même occasion je me suis rendu compte que les tests supplémentaires
que je faisais par exemple sur le HTCLIENT ou le GetCursorPos ne me
servaient à rien alors que j'ai vu plein d'exemples sur Internet qui les
utilisent.
Merci
Chez moi, ceci a l'air de marcher... => else { DefMDIChildProc (hwnd, message, wParam, lParam); return FALSE; }
Effectivement, en rajoutant le DefMDIChildProc avant le return false ça marche correctement c'est ça que je ne faisais pas. Par la même occasion je me suis rendu compte que les tests supplémentaires que je faisais par exemple sur le HTCLIENT ou le GetCursorPos ne me servaient à rien alors que j'ai vu plein d'exemples sur Internet qui les utilisent. Merci