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

C++ Discussion :

Fenêtres et focus


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 17
    Par défaut Fenêtres et focus
    Bonjour à toutes et à tous,

    Dans la méthode OnInitDialog d'une boite de dialogue modale, j'ouvre une autre fenêtre non modale qui me permet d'afficher des images ou du texte en relation avec les informations de ma première boite de dialogue.

    J'aimerais que cette fenêtre non modale récupère le focus au détriment de la première boite de dialogue, mais je n'y arrive pas.

    Auriez-vous une suggestion me permettant d'effectuer cette opération?

    J'ai tenté les méthodes SetFocus() ou SetActiveWindow(), mais cela ne donne rien.

    Merci d'avance pour vos réponses.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 151
    Billets dans le blog
    4
    Par défaut
    Salut,

    le principe même d'une modale c'est de garder le focus sur tout le reste tant qu'elle est ouverte... donc pourquoi ne pas fermer la modale si tu veux pas qu'elle ait le focus ? Ou pourquoi créer une modale en ce cas ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 17
    Par défaut
    Salut,

    Merci pour ta réponse.

    La modale est en fait une fenêtre permettant la navigation dans la seconde fenêtre (avance, recul...) qui sert à la consultation de données stockées en BDD, tout en bloquant l'accès au menu de la MainFrame (ne me demande pas pourquoi ça a été développé comme ça, ce n'est pas moi qui l'ai fait )
    Quand on affiche le second acte et les suivants, suite à un click sur un bouton de la modale, le focus est bien positionné sur la seconde fenêtre.
    Mais à l'ouverture initiale de la modale, c'est toujours la modale qui a le focus.

    J'espère que ces explications t'aideront à mieux comprendre mon problème...

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Peux tu envisager de modifier la fenêtre principale, ou absolument pas

    Car, comme l'a fait remarquer bousk, une fenêtre modale a des prérogatives qui vont à l'encontre de ton projet.

    Du coup, à condition que cela te soit possible, bien sur, l'idéal serait sans doute de mettre dans ta fenêtre principale un "tag" (à la limite, un simple booléen devrait suffire) destiné à indiquer "l'autorisation" (ou le refus d'autorisation) d'accéder à certains éléments (comme le menu, par exemple).

    Ce "tag" recevrait la valeur indiquant que l'accès est refusé lorsque la boite (qui pourrait dés lors ne plus rien avoir de modale) s'ouvrirait, et remis à sa valeur "accès autorisé" lorsque la boite serait fermée.

    D'ailleurs, si tu utililses Qt (par exemple), il est tout à fait possible d'utiliser les fonctions setDisable(bool) pour forcer la barre de menu à un état (in)actif. Tu pourrais donc travailler en la désactivant juste avant d'ouvrir la boite de dialogue et faire en sorte que cette boite de dialgue émette au moment de sa fermeture un signal, connecté à un slot qui remettra la barre de menu à son état actif.

    A mon sens, c''est la chose la plus cohérente et la plus normale à faire... Mais, vu que tu es visiblement sur un projet dont tu n'es pas le "seul maître à bord", il se peut que des impératifs majeurs, toujours d'actualité aient présidé au choix de créer cette boite sous une forme nodale et / ou qu'il soit "hors de question" d'envisager le moindre changement au niveau de la fenêtre principale (ou encore qu'il n'y ait purement et simplement pas moyen de désactiver la barre de menus, ou que cela ne suffise pas ou ...)

    Le truc, c'est que tu es forcément le seul à être en position de te renseigner sur "ce qui est acceptable", et que ce n'est qu'à partir du moment où nous le saurons que nous pourrons essayer de t'aider efficactement
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 17
    Par défaut
    Bonjour,

    Merci pour ta réponse.

    Malheureusement, je ne peux pas modifier le caractère modal de cette boite de dialogue

    Je vais apporter une précision concernant un point sur lequel je n'ai peut-être pas assez insisté, mais j'arrive à donner le focus à ma seconde fenêtre non modale quand j'affiche le deuxième ou le enième enregistrement que je souhaite consulter.
    C'est vraiment uniquement au moment du premier affichage de ma boite de dialogue modale que je n'arrive pas à donner la main à ma seconde boite de dialogue.

    Peut-être puis-je faire l'affichage de ma boite non-modale dans un évènement qui se produirait après le OnInitDialog?
    Existe-t-il un évènement de ce type ou dois-je le gérer moi-même?

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 502
    Par défaut
    Il y a pas mal de "détails" à prendre en compte lié au focus dans cette méthode, cf. la documentation :
    https://msdn.microsoft.com/fr-fr/lib...or=-2147217396

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

Discussions similaires

  1. Détecter passage souris sur fenêtre sans focus
    Par ValyGator dans le forum Windows
    Réponses: 1
    Dernier message: 01/02/2012, 07h43
  2. Rafraichir le contenu d'une fenêtre au focus
    Par jpclabaux dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 15/06/2010, 16h18
  3. fenêtre sans focus au chargement
    Par psgkiki dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 30/03/2008, 09h43
  4. Afficher une fenêtre sans focus
    Par kmaniche dans le forum C++Builder
    Réponses: 5
    Dernier message: 05/02/2007, 19h40
  5. [eclipse][plugin] Comment avoir une fenêtre avec focus
    Par relivio dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 07/04/2004, 15h54

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