Y a-t-il un moyen de changer la position du menu contextuel. Avec les fenêtres de niveau supérieur je peux le faire par CBTProc Callback Function et MoveWindow. Puis-je faire de même avec les menus? Doit être fait de sorte que le menu contextuel se trouve uniquement dans la zone de la fenêtre parente. Quelque chose comme un gestionnaire de fenêtre léger.Windows. Changer la position du menu déroulant
Répondre
Oui, dans un rappel de hook WH_CBT
, vous serez averti avec un 'nCode' de HCBT_CREATEWND
chaque fois qu'une fenêtre de menu est créée. Test pour le nom de la classe, menu standard/sous-menu aurait un nom de classe de '# 32768'. Vous pouvez ensuite envoyer un message MN_GETHMENU
à la fenêtre pour savoir quel menu est sur le point d'être activé. Mais as documented, il est trop tôt pour déplacer la fenêtre lorsque la notification est reçue, le menu n'est même pas encore visible, vous devrez donc peut-être sous-classer la fenêtre et traiter les messages supplémentaires. Notez que vous n'avez pas besoin d'un crochet pour être averti lorsqu'une fenêtre de menu est affichée, vous pouvez mettre un gestionnaire pour le message WM_ENTERIDLE
, tester pour 'wParam' pour voir si un menu a provoqué le message, obtenir le menu fenêtre à partir de 'lParam' et à nouveau envoyer un 'MN_GETHMENU' pour trouver le menu spécifique. Il est possible de déplacer la fenêtre à ce stade sans autre traitement de message. Sachez simplement que 'WM_ENTERIDLE' sera appelé plusieurs fois, vous devez donc garder une trace de votre déplacement ou non.
- 1. Comment changer la position du spinner ouvert?
- 2. jQuery sélectionner/menu déroulant et régler la position du bouton
- 3. comment changer la largeur du menu déroulant responsive bootstrap
- 4. Bootstrap menu déroulant: positionnement du contenu déroulant
- 5. CSS position menu déroulant Combo box
- 6. Changer l'apparence de mon menu déroulant
- 7. Déroulement de la largeur du menu déroulant
- 8. modification de la largeur du menu déroulant
- 9. Obtenir la position du menu de démarrage de Windows
- 10. Orchard dynamique menu déroulant
- 11. Requête relative à la position du menu déroulant par rapport à la taille du navigateur
- 12. Menu déroulant, lors du redimensionnement du navigateur
- 13. C# Windows Form ComboBox Contenu du menu déroulant
- 14. Changer la position du bouton
- 15. changer la position du UIAlertView
- 16. Modifier le menu déroulant CSS dans un menu déroulant
- 17. Opencart developement: changer la position du diaporama
- 18. Problème du menu déroulant CSS
- 19. extensible du menu déroulant CSS
- 20. Sélection du menu déroulant avec la boucle
- 21. largeur de la flèche du menu déroulant
- 22. Forcer la direction du menu déroulant RadComboBox
- 23. Calcul du menu déroulant Javascript
- 24. C# Windows Form html comme menu déroulant
- 25. CSS menu déroulant sur indenter menu déroulant
- 26. css position du menu réactif
- 27. Problèmes lors de l'affichage du menu déroulant
- 28. valeur de sélection automatique du menu déroulant
- 29. Changement de variable dynamique du menu déroulant
- 30. Menu déroulant statique - Nécessité de l'arrêter Position de déplacement
Merci beaucoup, c'est ce dont j'ai besoin! Maintenant, j'essaie de faire la même chose avec le menu contextuel, mais je n'arrive pas à trouver un message de fenêtre approprié pour l'attraper. Pouvez-vous me conseiller quelque chose? – Alexander
@Alexander - Testé avec une application Delphi, les deux méthodes semblent fonctionner. Assurez-vous de passer le handle de votre fenêtre à 'TrackPopupMenu [ex]' pour le paramètre 'hwnd' car il indique la fenêtre qui recevra les messages. –