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 :

"Instance" d'un controle "Edit"


Sujet :

Windows

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 82
    Points : 60
    Points
    60
    Par défaut "Instance" d'un controle "Edit"
    Bonjour,

    En utilisant par exemple, l'excellent freeware "AutoIt v3 Window Info", je vois la valeur de l'Instance d'un contrôle Edit (exemple 12).

    J'aimerais obtenir cette valeur par code (C or VB). Quelle(s) fonction(s) API me le permettrai(en)t (je connais le handle de la fenêtre parent) ?

    Merci beaucoup si vous pouvez m'aider.

  2. #2
    Membre régulier Avatar de jehrikhan
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Points : 89
    Points
    89
    Par défaut
    Ca dépend si ton Edit est créé "a la main" ou via les ressources.

    A la main il suffit tout simplement de récupérer la valeur de retour de la fonction qui te crée ton control.

    si c'est créé via une ressource il faut utiliser la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HWND GetDlgItem(HWND hDlg,int nIDDlgItem );
    ça te retourne le handle de ton control.

    le premier parametre hDlg c'est le handle de la fenetre qui contiens ton edit
    le deuxieme niDDlgItem c'est l'id défini dans ta ressource, par exemple IDC_EDIT1

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 82
    Points : 60
    Points
    60
    Par défaut ID versus Instance
    Merci Jerikhan,

    Compris ta réponse.
    Mais la valeur que je dois récupérer n'est pas celle de l'ID mais celle de l'INSTANCE. C'est du moins dans un champ nommé ainsi qu'elle apparait dans AutoIt.
    En effet la zone ID est vide et ne peut me servir à sélectionner le contrôle.
    Comme celui-ci a été créé par un autre programme (Windev), je suis tributaire des données existantes et seul cette zone "instance" est discriminante.

    Les contrôles sont donc repérés ainsi :
    Classe : "Edit",
    Instance : XX
    CassNameNN : EditXX

    Par exemple :
    Classe : "Edit",
    Instance : 21
    CassNameNN : Edit21

    La zone ID étant toujours vide...

    Quelle "entité" windows représente cette "instance" ????

  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
    Ça me parait bizarre, ce qu'ils appellent "Instance".
    Ce mot n'a visiblement pas la signification qu'il a "normalement" en programmation Windows.

    Essaie de voir la dans la doc de AutoIt ce que c'est supposé être...

    Essaie peut-être aussi en comparant avec ce que donne spy++...
    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
    Inscrit en
    Janvier 2007
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 82
    Points : 60
    Points
    60
    Par défaut Bizarre, vous avez dit bizarre..
    Tout à fait d'accord avec toi, Médinoc, sur l'utilisation par AutoIT du mot "instance".

    En effet, trouver ce que AutoIt veut dire serait intéressant. Mes recherches chez eux n'ont pas abouti, mais je ne m'avoue pas vaincu...

    En Spy++, les contrôles ne sont pas visiblement différenciés et sont du type :
    handle-""- Edit.

    ...??

  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
    Par défaut
    Tu dois regarder les propriétés de chacun.
    Normalement, ils ont, en plus de leur handle, un champ "Control ID"...
    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
    Inscrit en
    Janvier 2007
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 82
    Points : 60
    Points
    60
    Par défaut Champ CrlID
    Oui, chaque contrôle peut avoir un ID, rempli ou vide.
    Quand il est rempli, je l'utilise, mais là, il est vide et c'est cette zone "instance" qui est apparemment utilisée...

  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
    Mais l'ID est supposé être une valeur numérique.
    Dans Spy++, il ne peut pas être vide. Mais il peut être nul ou -1.
    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
    Inscrit en
    Janvier 2007
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 82
    Points : 60
    Points
    60
    Par défaut ID = 0
    Oui, 0 dans Spy++.
    Dans Auto It, apparait vide.

    A ce propos, Auto It, freeware, est beaucoup plus intéressant que Spy++.
    A tester !!

    En tout état de cause, "Instance" est une autre valeur.

  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
    Es-tu sûr que ce n'est pas juste un compteur pour dire "c'est le vingt-et-unième contrôle Edit que j'ai trouvé" ?
    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
    Inscrit en
    Janvier 2007
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 82
    Points : 60
    Points
    60
    Par défaut Elémentaire, mon cher Watson...
    Eh bien, ça me parait l'idée la plus probable.

    Et en effet il va me suffire de vérifier que la séquence des contrôles dans la fonction "prochaine fenêtre" est constante et ça me résoudrait mon problème !...

Discussions similaires

  1. Couleur de fond d'un controle d'edition
    Par Code Rom dans le forum Windows
    Réponses: 12
    Dernier message: 25/11/2009, 15h54
  2. [débutant] D6 controle d'edits
    Par faenor dans le forum Delphi
    Réponses: 8
    Dernier message: 26/05/2006, 12h41
  3. controler plusieurs edit
    Par faenor dans le forum Composants VCL
    Réponses: 3
    Dernier message: 01/05/2006, 22h03

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