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

API, COM et SDKs Delphi Discussion :

Ne pas voir les fenetres affichées lorsque l'application est minimisée


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 59
    Points : 45
    Points
    45
    Par défaut Ne pas voir les fenetres affichées lorsque l'application est minimisée
    Bonjour,

    J'aimerais que lorsque mon application est minimisée, l'ouverture d'une fenetre soit 'invisible', jusqu'a la restoration de mon application.

    Cela à l'air de marcher si
    est appelé

    Le probleme c'est que je dois en plus
    1) cacher l'icone de la barre des taches
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShowWindow(Application.Handle, SW_HIDE);
    2) afficher des fenetres qui s'affichent en restant en avant plan sur l'application
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FormStyle := fsStayOnTop;
    Or dés que j'utilise l'un ou l'autre (1 ou 2) les fenetres se montrent au show

    J'utilise une autre application pour envoyer des commandes personnalisées de min/maximisation à mon appli principale, celle ci gere alors elle meme les appels aux fonctions de min/maximisation.

    Quelqu'un a-t-il une idée de la maniere de proceder ?
    _pirBD_

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 18
    Points : 23
    Points
    23
    Par défaut
    Je ne suis pas sû d'avoir compris...
    Juste une idée : utiliser un Left et Top (négatifs) de sorte que la fenêtre soit hors écran par exemple dans l'évènement OnShow.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 59
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par nicolassalocin Voir le message
    Je ne suis pas sû d'avoir compris...
    Juste une idée : utiliser un Left et Top (négatifs) de sorte que la fenêtre soit hors écran par exemple dans l'évènement OnShow.
    Cette solution n'est pas applicable pour des histoires de focus,... ma fenetre ne doit pas etre affichée du tout meme si pas visible.

    Pour etre plus precis, voici un exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    procedure TForm5.Button1Click(Sender: TObject);
    begin
      Application.Minimize;
      ShowWindow(Application.Handle, SW_HIDE);
      if Form6=nil then
        Form6 := TForm6.Create(Application) ;
      with Form6 do
      begin
        Show;
      end;
      Sleep(3000);
      Application.restore;
      if Screen.ActiveForm<>nil then
         SetForegroundWindow(Screen.ActiveForm.Handle);
    end;
    On peut voir que lors du premier clic sur le bouton, ca ne marche pas (la fenetre surgit avant que l'application ne revienne)
    Alors que si on enleve la ligne ShowWindow(Application.Handle, SW_HIDE); la fenetre Form6, n'apparait que lors du restore

    J'aimerais pouvoir combiner les 2 :
    - l'icone dans la barre des taches est cachée (ici grace à ShowWindo mais si ia une autre solution ...)
    - la fenetre ne surgit pas avant le restore

    Merci pour toute contribution
    _pirBD_

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 18
    Points : 23
    Points
    23
    Par défaut
    pirbd,

    En reprenant ton code je constate que :

    1) avec la ligne ShowWindow(Application.Handle, SW_HIDE); active les deux fenêtre apparaissent simultanément

    2) avec la ligne ShowWindow(Application.Handle, SW_HIDE); non active il y a d'abord restauration de l'application avec la permière fenêtre puis affichage de la deuxième fenêtre

    Il faut vraiment être attentif pour le constater !

    J'ai le sentiment que votre code est proche d'une logique "TrayIcon" que j'adopte dans une de mes applications :
    - réduction en TrayIcon (d'ailleurs l'icône peut être visible ou non)
    - réception d'un message de type WM_USER provenant d'une autre application et qui indique de restaurer l'application.

    Pour information, je travaille en Delphi 7 et j'utilise le composant TRxTrayIcon
    http://sourceforge.net/projects/rxlib/

    Il y a sans doute une solution à votre probleme mais n'ayant pas la logique et les objectifs sous jacents, je ne peux proposer une alternative.

Discussions similaires

  1. [Joomla!] Ne pas voir les menus publics lorsque l'on est connecté
    Par steph70 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 22/07/2010, 08h52
  2. Comment ne pas voir les alertes de Access ?
    Par kaptnkill dans le forum Access
    Réponses: 6
    Dernier message: 12/07/2006, 16h49
  3. Réponses: 2
    Dernier message: 05/05/2006, 14h30
  4. Ne pas voir les liens d'une page !
    Par nicof3 dans le forum Langage
    Réponses: 3
    Dernier message: 25/04/2006, 12h22
  5. [C#] Ne pas voir une fenetre shell quand on lance un process
    Par Vins83 dans le forum Windows Forms
    Réponses: 19
    Dernier message: 24/02/2005, 12h15

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