Question

Comment ajouter un écouteur d’événements click à mon contrôle personnalisé créé avec wxWidgets? Le contrôle personnalisé utilise wxWindow comme base. Sur la liste des événements, je vois

wxEVT_LEFT_DOWN 
wxEVT_LEFT_UP 
wxEVT_LEFT_DCLICK
wxEVT_MIDDLE_DOWN
wxEVT_MIDDLE_UP 
wxEVT_MIDDLE_DCLICK
wxEVT_RIGHT_DOWN 
wxEVT_RIGHT_UP
wxEVT_RIGHT_DCLICK
wxEVT_MOTION
wxEVT_ENTER_WINDOW
wxEVT_LEAVE_WINDOW
wxEVT_MOUSEWHEEL 

Mais il n'y a pas de wxEVT_LEFT_CLICK ou similaire.

Était-ce utile?

La solution

Généralement, il n'y a pas de " clic " événement (et dans le cas de wxWidgets - il n'y en a pas ). L'action de cliquer est divisée en ses deux parties: Mouse Down et Mouse Up. En règle générale, ce que vous appelez un " clic gauche " L’événement est en fait traité de manière "gauche". événement.

Essayez-le:

  • survolez un bouton (tel que le bouton "Ajouter un commentaire" de cette page)
  • Cliquez avec le bouton gauche de la souris et maintenez enfoncé
  • Déplacez la souris hors du bouton en maintenant enfoncé
  • Relâchez le bouton gauche de la souris
  • Rien ne se passe!

Cette fois-ci:

  • survolez le même bouton
  • Cliquez sur le maintenez enfoncé le bouton gauche de la souris
  • Relâchez le bouton gauche de la souris
  • Le " clic " l'action que vous attendez est déclenchée par l'événement up!

Autres conseils

En premier lieu, je recommande d'hériter de wxControl et non de wxWindow, wxControl est conçu pour cet objectif précis et vous risquez moins de vous battre contre le système. Lorsque je regarde un contrôle que je construis dans ma propre application wxWidgets, je vois que mon gestionnaire de clics est attaché à wxEVT_LEFT_DOWN. En examinant ma copie de la programmation d'interface graphique multi-plateforme avec wxWidgets, je peux voir une liste de tous les événements wxMouseEvents, et il n'y a pas wxEVT_LEFT_CLICK. Je suggérerais que wxEVT_LEFT_DOWN soit l'événement à utiliser.

Maintenant, après avoir posté mes notes, j'ai lu la réponse de Burly et je suis d'accord avec lui. wxWidgets offre les événements de niveau le plus bas, ce qui vous donne le maximum de contrôle sur l'interface utilisateur que vous construisez pour vos utilisateurs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top