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.NET Discussion :

détection du premier plan


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut détection du premier plan
    bonjour

    j'ai plein de controles créés dynamiquement sur ma feuille
    j'ai du traitement à faire sur chaque enfin que ceux qui sont visibles
    donc pas enfoui sous un autre

    comment savoir si un controle est visible par l'utilisateur ? (au moins un bout)

    et vu que j'aurais plusieurs fenêtre, comment savoir laquelle est au premier plan ?

    merci
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Pour avoir la fenêtre active tu peux faire :
    C'est une propriété statique.

    J'ai trouvé quelques pistes pour détecter les composants cachés. Le z-order d'un controle est défini par sa position dans la collection des controles de son parent. Ce qui signifie que théoriquement en parcourant la collection des controles récursivement à partir du Form, on peut détecter ceux qui sont potentiellement masqués en effectuant des tests sur les coordonnées des 'coins' des composants.
    Un composant (partiellement) masqué est un composant dont les coordonnées se croisent avec celle d'un composant frère, ou dont le conteneur parent est (potentiellement) masqué par un de ses propres frères.
    Ceci dit, pour être le plus correct possible, il faudrait en plus gérer la transparence des composants, mais là, ça devient très compliqué.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    là ou ca se complique c'est que je veux pas la fenetre active, je veux savoir si au moins une partie est visible par l'utilisateur

    une fenetre peut etre en dessous un autre mais qu'on en voit une partie



    pour les controles sur une fenetre j'ai trouvé getchildatpoint qui dit quel controle est celui du dessus à un point donné sur une fenetre
    je suis en train de voir si je peux faire un algo qui trouve tous les noms des controles au dessus en très peu de points ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par sperot51
    là ou ca se complique c'est que je veux pas la fenetre active, je veux savoir si au moins une partie est visible par l'utilisateur
    ça c'est pas très compliqué, je suppose que tu as une interface MDI (mais ça fonctionne aussi sans MDI). Tu récupères la position de chaque fenêtre avec la taille, et avec quelques tests simples sur les coordonnées, tu détermines si les fenêtre se chevauchent sans être complêtement masquées. La propriété ActiveForm rentre en jeu dans ce cas là.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Utilise l'api GetForegroundWindow tu verras c'est très simpla à utliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Declare Function GetForegroundWindow Lib "user32" () As Long
    Dim h as Long
     
    h = GetForegroundWindow
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    Citation Envoyé par SaumonAgile
    ça c'est pas très compliqué, je suppose que tu as une interface MDI (mais ça fonctionne aussi sans MDI). Tu récupères la position de chaque fenêtre avec la taille, et avec quelques tests simples sur les coordonnées, tu détermines si les fenêtre se chevauchent sans être complêtement masquées. La propriété ActiveForm rentre en jeu dans ce cas là.

    je viens de mettre sur le papier un algo qui me donne le noms de tous les controles au moins partiellement visibles
    par contre pour les fenetres je ne vois pas exactement ce que tu veux dire
    ca ne sera pas forcément en MDI
    m'enfin comment savoir si une partie de fenetre est visible, pas trouvé de fonction pour faire ca encore ...

    et je ne veux pas utiliser d'api, je ne veux utiliser que le framework pour que l'appli marche sur tous les windows sans se poser de question
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Citation Envoyé par sperot51
    je ne veux pas utiliser d'api, je ne veux utiliser que le framework pour que l'appli marche sur tous les windows sans se poser de question
    Je vois pas ou est le pb Moi j'utilise des API dans mes programmes et il tourne partout !
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

Discussions similaires

  1. [VB6]Form en premier plan
    Par VeNus2 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 30/04/2004, 13h05
  2. petit problème premier plan, arrière plan
    Par gros bob dans le forum OpenGL
    Réponses: 4
    Dernier message: 19/04/2004, 13h00
  3. Réponses: 2
    Dernier message: 14/03/2004, 23h04
  4. Premier plan sur un dialog
    Par |PaRa-BoL dans le forum MFC
    Réponses: 5
    Dernier message: 04/03/2004, 13h52
  5. forcer une fenetre à etre au premier plan jusqu'a ...
    Par peppena dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 22/12/2003, 17h14

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