IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Intercepter clic droit


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut Intercepter clic droit
    Bonjour,

    Je me bats avec le Outlook Control Viewer sur une appli VB6.

    Je voudrais shunter le menu contextuel qui apparait lorsqu'il y a clic droit.
    Mais ce composant super bien fait ne gère aucun événement clic.

    Auriez-vous une idée pour me sortir de cette situation ?

    Merci

  2. #2
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    C'est un controle connu ? je le trouve où, ou c'est quoi son nom d'ocx ?

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Par défaut
    OUTLCTL.DLL, il est dans un sous-répertoire d'office

  4. #4
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Exact.

    Tu ajoutes ce composant par "composants" -> "objets à insérer" -> "contrôle d'affichage Outlook"

    Néammoins, cette question peut-être traitée de façon générique :
    comment intercepter un clic sur un composant qui ne gère pas cet événement ?

    Pour être encore plus exact, comment intercepter le clic sur un coposant qui n'expose pas l'événement ?
    En effet, nous pouvons faire des sélection dans ce composant, donc il n'est pas inactif. C'est juste que le clic n'est pas exposé. Et je crois qu'en VB6, je peux me gratter pour essayer d'"overrider" un événement...

    J'ai essayé la librairie GetKeyState de user32, mais elle ne m'est pas d'un grand secours.

    Voilà où j'en suis actuellement.

  5. #5
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par jml94
    J'ai essayé la librairie GetKeyState de user32, mais elle ne m'est pas d'un grand secours.
    J'arrive à détecter le clic droit avec cette API, mais comment annuler ce même clic ?

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Par défaut
    Je pense avoir la solution.

    Grossièrement, il s'agit de subclasser la windowprocedure de ton composant.

    API : setwindowproc notamment.

    Cette window proc reçoit les évènements "bruts de fonderie" dirigés vers la form / composant, et les reroute à sa guise vers les évènements gérés par l'utilisateur (cmdQuitter_click)

    Donc en subclassant (override si on veut, enfin, non en fait) cette procédure par la tienne, tu pourras rerouter ce qui t'intéresses seulement.

    Si tu catch l'évènement à posteriori comme te permet de le faire getinputstate, à moins que tu aies un paramètres critique en entrée sortie (auquel cas tu n'as qu'à le mettre à zéro !) tu ne pourras pas intercepter l'évènement.

    a+

  7. #7
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par OhMonBato
    C'est un controle connu ?
    Pas forcément beaucoup, et au vu de l'exhaustivité de l'API, ça se comprend...

  8. #8
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    Merci pour l'info, je n'ai pas ce composant chez moi mais effectivement peu importe.

    Je pense juste à un truc assez tarabiscoté, très bidouille.
    Je viens de faire l'essai en dessinant un controle Image (donc un simple cadre transparent) au dessus d'un controle Label.

    A l'exécution, c'est le controle Image qui prend l'événement click mais l'utilisateur ne voit que le controle Label. Je ne sais pas si une bidouille de ce style t'aiderait à résoudre ton pb.

  9. #9
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    C'est justement le style de bidouille que je cherche, car je ne pense pas que je puisse m'en sortir "proprement".

    J'essaie et je fais un feedback.

  10. #10
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Raté.
    Je rentre dans mon controle sans déclencher l'événement clic de la picturebox.

    GRRR !


  11. #11
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par OhMonBato
    Merci pour l'info, je n'ai pas ce composant chez moi mais effectivement peu importe.

    Je pense juste à un truc assez tarabiscoté, très bidouille.
    Je viens de faire l'essai en dessinant un controle Image (donc un simple cadre transparent) au dessus d'un controle Label.

    A l'exécution, c'est le controle Image qui prend l'événement click mais l'utilisateur ne voit que le controle Label. Je ne sais pas si une bidouille de ce style t'aiderait à résoudre ton pb.
    Ta bidouille marche avec un Label, mais pas avec un textBox.
    Je pense que la différence vient du fait qu'on peut "entrer" dans un controle ou pas.

    Dommage, c'était bien vu.

    --- edit ---

    Je confirme.
    Si on désactive le textbox (enabled = false), la bidouille marche car nous ne pouvons pas rentrer dans la box.

Discussions similaires

  1. Clic droit/gauche souris
    Par Mouse! dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 30/05/2013, 20h34
  2. Intercepté clic droit sur un élément particulier
    Par atar64 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 30/05/2007, 17h06
  3. [FLASH MX2004] Clic droit contextuel
    Par pioup dans le forum Flash
    Réponses: 2
    Dernier message: 29/07/2004, 09h31
  4. Réponses: 2
    Dernier message: 09/05/2003, 17h41
  5. Evènement sur clic droit !?
    Par soccersoft dans le forum Composants VCL
    Réponses: 6
    Dernier message: 26/12/2002, 21h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo