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 :

Operation sur la taille et les proprietes de fenetres


Sujet :

Windows

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut Operation sur la taille et les proprietes de fenetres
    Bonjour,
    J ai concu un petit code reduisant une fenetre si cette derniere est placee au dessus d un certain seuil de l ecran.. LE tout realise en delphi mais mon probleme residant dans l utilisation de l api windows


    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
    Code: 
     GetWindowRect (Hwnd,rect); 
      width:=rect.Right-rect.Left; //width of the window 
      height:=rect.bottom-rect.top; //height of the window 
      if texttmp='InfoRecei' then exit; {test the beginning of the name of the window ( 
      just the beginning because there is a difference between winXP and Win2000 windows name } 
    
      if rect.top<30 then //do something just for windows which are not under the Information bar 
        begin 
           rect.Top&#58;=fixheight; 
           if height>screen.Height-55 
           then  //reduction of the size of the window if it is too 'big' 
             height&#58;=height-fixheight; 
             movewindow&#40;hwnd,rect.Left,rect.Top,width,height,true&#41;; 
           end;
    Tout marche bien , la reduction de la taille et de la position est bien effectuee..
    Mais le probleme : Si ma fenetre est en mode " taille max" et prend tout l ecran, le programme la met a la bonne taille certes, mais ensuite il n est plus possible de l agrandir, le systeme considerant que la taille max est la nouvelle taille courante..
    J aimerai en fait pouvoir mettre la fenetre en mode normal ( retreci et non reduit ) avant de changer la taille courante afin de pouvoir la remettre en plein ecran apres ma modif...
    Apparemment la fonction iszoomed de l api permettrait de voir si la fenetre est agrandie ou pas mais comment modifier ce parametre
    Si quelqu un a une idee n hesitez surtout pas
    merci d avance

  2. #2
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut

    Tu peux utiliser ShowWindow( SW_RESTORE ).

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut
    Ben en fait le probleme c que g mon appli qui est une barre d infos defilantes qui peut tourner pdt 1h par ex..
    Ensuite je ne peux pas restaurer les fenetres a leur taille initiale si l utilisateur les as deplaces par exemple pdt ce tps...

  4. #4
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    J'ai compris que ton problème était:
    J aimerai en fait pouvoir mettre la fenetre en mode normal ( retreci et non reduit )
    quelle est le problème avec ShowWindow ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut
    Imaginons que l on ait une fenetre agrandie.
    J aimerai la passer en mode non agrandi ( et non reduit ) soit l intermediaire..
    Comment faire cela ?
    Merci d avance

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut
    le gros probleme de showwindow est qu il restore la taille precedente..
    Et g une appli qui modifie les fenetres et peut durer plusieurs minutes..
    Dc si l utilisateur a reorganise son affichage, restore va tout remettre comme au debut ce qui n est pas trop souhaitable..

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut
    Est il possible de fixer la taille des fenetres lors de l agrandissement ??
    du genre qd je clique sur agrandir une fenetre, elle sera de dim 600*400 ou bien 700*500..... ??
    Merci d avance

  8. #8
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par gilles641
    Imaginons que l on ait une fenetre agrandie.
    J aimerai la passer en mode non agrandi ( et non reduit ) soit l intermediaire..
    le gros probleme de showwindow est qu il restore la taille precedente..
    ben je pige pas. A part restaurer à la taille précédente, que veux-tu que Windows fasse ? Il peut pas décider de "désagrandir" à une autre taille sortie de nul part ?

    Citation Envoyé par gilles641
    Est il possible de fixer la taille des fenetres lors de l agrandissement ??
    Oui, mais au niveau du code de la fenêtre, sinon c'est plus complexe. Voir WM_GETMINMAXINFO.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut
    Bon je vais m expliquer plus clairement parce que je crois que je suis un peu confus dans mes idees.
    Alors je developpe une barre d informations.
    Quand une info est dispo, c une barre de hauteur 30 px qui apparait a l ecran..
    Qd elle est lancee, elle fait descendre toutes les fenetres la recouvrant en dessous..
    admettons qu une fenetre soit agrandie lors de l ouverture de la barre, cette derniere sera tjs agrandie mais disposee en dessous et de taille plus petite..
    L info defilant par exemple 2 min.. Pendant ce tps je reouvre un navigateur en agrandi etc...
    Apres le tps de defilement de l info, ma barre disparait.. mais elle laisse un pur desordre sur l ecran vu que mon navigateur est en mode 'agrandi'mais ne prend pas tt l ecran..
    En voulant le reagrandir il reste fige a la taille qu il avait lors de la presence de la barre..
    J aimerai pouvoir redonner a mes fenetres la possibilite de se reouvrir en grand apres la disparations de la barre..
    Ac restore ce n est donc ps adapte.-
    Voila le gros prob

  10. #10
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Alors il faut mémoriser la taille initiale de chaque fenêtre, ou simplement les maximiser à nouveau.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut
    ben en memorisant la taille initiale, imaginons que l utilisateur change kles dims de la fenetre en la mettant a gauche pa rexemple, il n aura surement pas envie d avoir un agrandissement de la fenetre lors de la disparition de la barre...
    En maximisant la fenetre a nvx elle reste a la tailel precedente ( avcec la barre ) , plus moyen de la mettre em grand a part en le faisant manuellement ds le mode non agrandi...
    C louche tt ca

  12. #12
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Tu vas devoir coder un hook alors, et tracer les changements de position / taille de chaque fenêtre.
    Fais une recherche sur SetWindowsHookEx( WH_CBT ).

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut
    C du pur chinois, j ai beau regarder sur le net je ne vois absolument comment proceder... .y a til d autres manieres ou bien c l unique solution d arriver a la resolution du probleme ?

  14. #14
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    C'est la manière propre et fiable. Après tu peux toujours faire un truc à base de EnumWindows + un timer, et croiser les doigts...

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut
    En fait j essaie ac un timer, je procede de la sorte :
    Si iszoomed(fenetre courante) alors on lui donne une taille normale.
    Voila le prob, iszoomed retourne tjs false meme pour des fenetres qui sont censes etre en mode agrandies..
    une idee ? encore et encore :-)

  16. #16
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par gilles641
    [...]iszoomed(fenetre courante) [...].
    Voila le prob, iszoomed retourne tjs false meme pour des fenetres [...].
    si tu interroges la "fenêtre courante", tu ne sauras rien concernant les autres...

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut
    non je fais des getRect etc pour toutes les fenetres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    EWProc &#58;= GetTitle;
      EnumWindows &#40;@EWProc, 0&#41;;
    iszoomed est a false pour chaque fenetre meme pour celles ouvertes en grand.

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut
    JE commence a me demander si ce probleme a une solution..
    Il faut absolument que je trouve une alternative..
    Cela fait plusieurs jours que je perds tt mon tps a tt essayer , rien ne marche, ca commence doucement a m inquieter

  19. #19
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Je t'ai donné une solution fiable (hook).
    Chez moi IsZoomed() fonctionne.

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut
    J ai enfin reussi !!!!! isZoomed ne fonctionnait pas parce qu il manquait un result:=true dans ma fonction d enumeration des fenetres ouvertes...
    Merci bcp bcp bcp pour les reponses

Discussions similaires

  1. Operation sur les pointeurs
    Par Bahan dans le forum C
    Réponses: 8
    Dernier message: 24/05/2006, 17h24
  2. Operation sur les fichiers
    Par miron dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 06/05/2006, 15h45
  3. operation sur les float
    Par grand's dans le forum C++
    Réponses: 14
    Dernier message: 26/10/2005, 10h43
  4. Opération sur les dates (Shell)
    Par argoet dans le forum Linux
    Réponses: 6
    Dernier message: 21/06/2005, 13h56
  5. operation sur les dates
    Par elendil dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/04/2005, 12h14

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