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 :

Connaître la fenêtre active d'une appli MDI


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier
    Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 85
    Points : 105
    Points
    105
    Par défaut Connaître la fenêtre active d'une appli MDI
    Bonsoir

    Je suis en train de gérer la molette dans les flexgrid d'une application MDI.
    Pour ça j'ai utilisé l'API SetWindowsHookEx pour mettre en place ma routine de gestion du message adéquat. Ca fonctionne, mais j'ai juste un problème avec les fenêtres modales.
    Lorsqu'une fenêtre de ce type est active, je ne sais pas comment savoir laquelle à l'aide des fonctions VB (dans la fonction gérant le hook évidemment). Pour contourner le problème, j'ai utilisé l'API permettant de connaître le titre de la fenêtre, mais ce n'est pas élégant parce que chaque fenêtre doit alors avoir un caption unique. J'aurai préféré me référer au nom de chaque fenêtre donné dans VB.
    Je pourrai également mettre à jour un index permettant d'identifier chaque fenêtre à l'ouverture, mais je n'aime pas trop.
    J'ai également testé les proriétés Visible et Enabled des fenêtres modales, mais le fait d'accéder à ces propriétés charge les fenêtres, et à la fermeture de l'application, le process reste en mémoire de ce fait.

    Pour ceux qui ont eu le courage de lire jusqu'ici , quelqu'un a-t-il une idée plus "naturelle" pour résoudre ce problème ?

  2. #2
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    ActiveForm ne te convient pas ?

  3. #3
    Membre régulier
    Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 85
    Points : 105
    Points
    105
    Par défaut
    Bon sang mais bien sur !!! Screen.ActiveForm est la solution.

    J'avais utilisé ActiveForm, mais sur ma fenêtre principale. Du coup, si une fenêtre modale était affichée, ActiveForm me renvoyait la fenêtre MDI fille en cours. En fait, il faut utiliser ActiveForm sur l'objet Screen. Je n'avais pas lu l'aide sur ActiveForm en intégralité
    Merci bidou de la remarque qui m'a amené à la solution.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 12/08/2008, 16h49
  2. Comment fermer une fenêtre Child dans une application MDI
    Par bahiatoon dans le forum C++Builder
    Réponses: 9
    Dernier message: 05/10/2006, 08h57
  3. Réponses: 7
    Dernier message: 13/03/2006, 08h56
  4. Réponses: 11
    Dernier message: 06/12/2005, 08h23
  5. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 15h17

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