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

Windows Discussion :

Hook et prise de focus d'un champ


Sujet :

Windows

  1. #1
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 55
    Points : 46
    Points
    46
    Par défaut Hook et prise de focus d'un champ
    Bonjour,

    Je cherche un hook qui récupèrerait le changement de focus dans les champs.
    Cela me permettrait dans un activeX WebBrowser d'activer un procédure à chaque fois que je passe d'un champ à l'autre dans une page internet.
    Quelqu'un aurait une autre idée?

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Pas évident, surtout que les champs d'IE ne sont pas des vrais contrôles... (ils sont WindowLess)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Inactif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Points : 19
    Points
    19
    Par défaut
    c'est tellement "pas évident", que ça prend quelques lignes pour intercepter les events correspondants de l'Interface COM.
    Réviser les bases en COM programming (MSDN) ...

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Un événement COM, oui. Un Hook, c'est aussi "pas évident" que je l'ai dit...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 55
    Points : 46
    Points
    46
    Par défaut
    Merci pour vos réponses mais si "ça prend quelques lignes pour intercepter les events" j'aurais bien aimé les voir ces lignes car chercher cela sur MSDN n'est pas évident puisqu'il y a 2000 résultats.

    De mon coté j'ais trouvé un hook qui permet de récupérer l'élément qu'il me fallait soit "SetWinEventHook" avec l'évènement "EVENT_OBJECT_FOCUS".

    Par contre, maintenant que j'ai l'ID et le Handle de l'objet qui a le focus j'aimerai savoir quel est sont type (Combobox, case à cocher, champs de saisi....)???

    Quelqu'un s'aurait comment trouver cette information partant de l'ID et du Handle de mon champ???

    Merci d'avance pour toutes réponses possibles.

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 55
    Points : 46
    Points
    46
    Par défaut
    Merci de votre réponse, je suis allé voir sur le site de MSDN mais je ne trouve pas l'identification pour savoir si c'est une comboBox par exemple. Auriez-vous un exemple ou une précision pour détecter si le focus est sur une combobox?

    Encore merci de vos réponses, ça fait 3 semaines que je recherche des informations et que je fais des centaines de tests donc sa fait plaisir d'avoir un peu d'aide à ce sujet.

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Les ComboBox Win32 normales ont la classe "COMBOBOX".
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 55
    Points : 46
    Points
    46
    Par défaut
    Merci bien c'est exactement ce qu'il me fallait. Par contre je n'ais pas eu besoin de GetWindowLong(GWL_STYLE). Quel été l'objectif d'utiliser cette fonction?
    Par exemple pour le focus d'un bouton savez vous comment je pourrai changer les petits pointillés de windows qui montre que le focus est sur un bouton?(Ces pointillés se décalle avec les tabulations)

    Comme vous avez pu le remarqué, je suis débutant en API et les projets sur lequel je suis sont assez lourd. Donc désolé si mes questions vous semble bête. Je suis content d'avoir trouver sur quel élément je suis dans une fenetre donc encore merci.

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Les pointillés sont dessinés par la fonction DrawFocusRect(), appelée automatiquement par le contrôle. Je ne vois pas trop pourquoi tu voudrais changer les pointillés eux-mêmes, je pense plutôt que tu veux sélectionner autre chose. Pour ça, il faut envoyer le message approprié au contrôle.


    Le GetWindowLong(GWL_STYLE) sert pour la classe "BUTTON", car il influe sur le type réel du contrôle: En effet, tous les types de contrôle suivants ne sont que des styles différents de la classe "BUTTON" :
    • Cadre
    • Case à cocher
    • Bouton radio
    • Bouton poussoir
    • Case à cocher ou bouton radio déguisé(e) en bouton poussoir.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 55
    Points : 46
    Points
    46
    Par défaut
    ok merci pour ces info c'est intéréssant à savoir. Mon but est de mettre un cadre vert autour du champ qui à le focus. Lorsque j'appui sur le tabulation, le nouveau champ qui à le focus doit avoir le cadre et celui qui l'avait va perdre ce cadre. Voici une image de ce que je dois réaliser: http://www.pompomline.info/images/move2.JPG

    Auriez vous une idée?

Discussions similaires

  1. Coloration des champs à la prise de focus
    Par michel.souris dans le forum WinDev
    Réponses: 5
    Dernier message: 28/03/2014, 15h56
  2. [WD11] comment sortir d'un champs saisie apres la prise de focus
    Par moncef_abderrahim dans le forum WinDev
    Réponses: 2
    Dernier message: 16/12/2009, 19h42
  3. Prise de focus
    Par zoreil dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 28/07/2006, 14h12
  4. mettre le focus sur le champ approprié
    Par discogarden dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/07/2005, 16h59
  5. Aide sur le focus d'un champ d'une forme
    Par yannickn dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/03/2005, 12h48

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