Pour mettre un bouton "minimiser" personalisé sur une fenetre pas
rectangulaire je fait d'abord des tests sur une fenetre créée avec le
style WS_OVERLAPPEDWINDOW, et dont je ne modifie pas le HRGN.
Je gere le WM_NCHITTEST en renvoyant:
- HTMINBUTTON si le curseur est sur le bouton minimiser personalisé (un
simple rectangle dessiné dans la zone client),
- DefWindowProc(...) sinon.
Quand je clique sur le bouton minimiser perso, le bouton minimiser de la
bare de titre s'enfonce, mais la fenetre n'est pas réduite, alors
qu'elle l'est bien si je clique sur le bouton minimiser de la barre de
titre.
Comment s'explique cela? Je pensais que traiter le WM_NCHITTEST suffisait.
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
Christian ASTOR
Vincent Jacques wrote:
Quand je clique sur le bouton minimiser perso, le bouton minimiser de la bare de titre s'enfonce, mais la fenetre n'est pas réduite, alors qu'elle l'est bien si je clique sur le bouton minimiser de la barre de titre. Comment s'explique cela? Je pensais que traiter le WM_NCHITTEST suffisait.
Il faut envoyer WM_SYSCOMMAND & SC_MINIMIZE sur eg WM_LBUTTONUP (après avoir fait un ReleaseCapture(), la souris étant capturée auparavant sur le WM_NCLBUTTONDOWN - c'est une méthode parmi d'autres)
Vincent Jacques wrote:
Quand je clique sur le bouton minimiser perso, le bouton minimiser de la
bare de titre s'enfonce, mais la fenetre n'est pas réduite, alors
qu'elle l'est bien si je clique sur le bouton minimiser de la barre de
titre.
Comment s'explique cela? Je pensais que traiter le WM_NCHITTEST suffisait.
Il faut envoyer WM_SYSCOMMAND & SC_MINIMIZE sur eg WM_LBUTTONUP
(après avoir fait un ReleaseCapture(), la souris étant capturée
auparavant sur le WM_NCLBUTTONDOWN - c'est une méthode parmi d'autres)
Quand je clique sur le bouton minimiser perso, le bouton minimiser de la bare de titre s'enfonce, mais la fenetre n'est pas réduite, alors qu'elle l'est bien si je clique sur le bouton minimiser de la barre de titre. Comment s'explique cela? Je pensais que traiter le WM_NCHITTEST suffisait.
Il faut envoyer WM_SYSCOMMAND & SC_MINIMIZE sur eg WM_LBUTTONUP (après avoir fait un ReleaseCapture(), la souris étant capturée auparavant sur le WM_NCLBUTTONDOWN - c'est une méthode parmi d'autres)