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++Builder Discussion :

dimension ecran et form


Sujet :

C++Builder

  1. #1
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut dimension ecran et form
    un debut de mon application tire des renseignements de la FAQ ce que j'ai reussi a faire d'apres les renseignements recueillis et mes propres recherches
    il faut une forme et un bouton
    dans form.cpp
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
     
    #include <vcl.h>
    #pragma hdrstop
    #include "save_resol.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
            // on rend invisible la barre de tache
    HWND wd = FindWindow("Shell_TrayWnd", NULL);
    ShowWindow(wd, 0);
            // acquisition resolution
    Width = Screen->Width;
    Height = Screen->Height;
            // on sauve la resolution
    save_reso_width = Width;
    save_reso_height = Height;
            // on teste la resolution
            // si elle est differente de 800*600
            // alors on change la resolution
    if(Width != 800 && Height != 600)
    {
    TDeviceMode *Dev = new TDeviceMode;
    EnumDisplaySettings(0, ENUM_CURRENT_SETTINGS, Dev);
    Dev->dmPelsWidth = 800;
    Dev->dmPelsHeight = 600;
    Dev->dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
    bool result = (ChangeDisplaySettings(Dev, CDS_RESET) == DISP_CHANGE_SUCCESSFUL);
    delete Dev;
            // result n'est pas utilise pour l'instant
            //return result;
    }
    // on positionne la forme en haut a gauche
    HWND hwnd = GetForegroundWindow();
            //MoveWindow(hwnd, 0, 0, 800, 600, 1);
    SetWindowPos(hwnd, HWND_TOP, 0, 0, 800, 600, SWP_DRAWFRAME);
            // on efface la barre de titre ainsi que
            // minimise, resize, et croix fermeture
            // la barre de titre doit etre effacee apres le
            // positionnement sinon la fonction SetWindowPos
            // est sans effet quand au positionnement en
            // haut a gauche
    Form1->BorderStyle = bsNone;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
            // on teste la resolution
            // si elle est differente de la sauvegarde
            // alors on change la resolution
    Width = Screen->Width;
    Height = Screen->Height;
    if(Width != save_reso_width && Height != save_reso_height)
    {
    TDeviceMode *Dev = new TDeviceMode;
    EnumDisplaySettings(0, ENUM_CURRENT_SETTINGS, Dev);
    Dev->dmPelsWidth = save_reso_width;
    Dev->dmPelsHeight = save_reso_height;
    Dev->dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
    bool result = (ChangeDisplaySettings(Dev, CDS_RESET) == DISP_CHANGE_SUCCESSFUL);
    delete Dev;
            // result n'est pas utilise pour l'instant
            //return result;
    }
            // on rend visible la barre de tache
    HWND wd = FindWindow("Shell_TrayWnd", NULL);
    ShowWindow(wd, 8);
            // on termine le programme
    Application->Terminate();
    }
    dans form.h
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
     
    #ifndef save_resolH
    #define save_resolH
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published: // IDE-managed Components
            TButton *Button1;
            void __fastcall Button1Click(TObject *Sender);
    private: // User declarations
    public:  // User declarations
    int save_reso_width;
    int save_reso_height;
            __fastcall TForm1(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
    je remercie tous les intervenants c'est grace a eux si je progresse
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  2. #2
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Tu poses ton code à titre informatif, ou tu as une question?

    Si c'est juste pour info, tu peux demander à faire parti des groupes de discussions. Sinon, j n'ai pas vu ta question, désolé

  3. #3
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    le code fonctionne chez moi sur XP pro pack1 il est donne a titre d'information mais peut etre ameliore si besoin est le but du forum est de partager et c'est ce que je fais.
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  4. #4
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    D'accord, mais pourquoi rend tu invisible la barre des tâches?
    Cette opération la rend juste invisible, mais elle ne libère pas l'espace en bas de l'écran. Pour cela, il faut modifier le paramètre d'affichage de la barre.

  5. #5
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    je rend la barre de tache invisible pour qu'une mauvaise manip ne soit pas faite le programme que je projette, je doit gerer un telescope donc etre utilise la nuit, je vais commander des moteurs pas a pas et, ceux ci ne peuvent rester sous tension sans tourner (c'est le programme qui les commandes).
    Je m'etais apercu que toute la surface de l'ecran n'etait pas liberee ma forme ne fait pas tout a fait 800*600 je pensais que cela etait normal pour recuperer cet espace quelle commande utiliser S.V.P.
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Citation Envoyé par blondelle
    je rend la barre de tache invisible pour qu'une mauvaise manip ne soit pas faite le programme que je projette, je doit gerer un telescope donc etre utilise la nuit, je vais commander des moteurs pas a pas et, ceux ci ne peuvent rester sous tension sans tourner (c'est le programme qui les commandes).
    Je m'etais apercu que toute la surface de l'ecran n'etait pas liberee ma forme ne fait pas tout a fait 800*600 je pensais que cela etait normal pour recuperer cet espace quelle commande utiliser S.V.P.
    Pourrais tu être plus précise et t'exprimer un peu mieux s'il te plaît ?
    Je ne comprend pas bien ce que tu demandes...
    Neilos

  7. #7
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    comment recuperer l'espace laisse par la barre de tache
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Ajuster les propriétés Width et Height de ta fiche à respectivement Screen->Width et Screen->Height ne le fait pas ?
    Neilos

  9. #9
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    reponse a neilos
    ma forme se redimensionne systematiquement en 790*524
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  10. #10
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Ta form est maximisée ou qqc ?
    Si tu la redimensionne à la main (avec la souris) durant l'exécution tu peux l'aggrandir en débordant sur la zone où il y avait la bare des tâches non ?
    Neilos

  11. #11
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    reponse a neilos
    le fait d'avoir supprime la barre de titre ne me donne plus la main sur la forme
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  12. #12
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Eh bien pour les tests tu remet la barre de titre :p
    Neilos

  13. #13
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    reponse a neilos
    la barre de titre remise aucun changements l'ecran est occupe completement mais la dimension de la forme est toujours de 790*524, par contre la place liberee quand on rend la barre de titre invisible n'est pas recuperee , on ne recupere pas non plus la place de la barre de tache quand on la rend invisible
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  14. #14
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Et tu as essayé comme je t'ai dit en agrandissant la taille via le curseur de la souris ?
    Neilos

  15. #15
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    reponse a neilos
    oui mais je n'ai pas la main sur la forme
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  16. #16
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Tu appelles quoi ne pas avoir la main ?
    Neilos

  17. #17
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    reponse a neilos
    la souris ne peut pas redimensionner la forme
    Oui d'accord mais c'est TOI qui développe cette application...donc tu peux faire en sorte que ta fenêtre puisse à nouveau être redimensionnée par la souris pour faire le test et ensuite le désactiver à nouveau....non ?
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  18. #18
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Salut,
    Pour Neilos, je ne comprend pas ta modification:
    Dernière modification par Neilos Aujourd'hui à 19h50. Motif: Evite de poster deux fois de suite, utilise plutôt le bouton Editer à la place. Merci !
    Vu que ce que tu as ajouté à ma conversasion ne viens pas de moi !

    Pour Blondelle, voici un code que j'ai fais qui teste l'état de la barre de tâche, si tu veux la modifier, je te donnerais la fonction plus tard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if((UINT) SHAppBarMessage(ABM_GETSTATE, &TaskBar) == ABS_ALWAYSONTOP)
    {\\traitement
    }
    et je l'ajouterai en modifiant mon post (ne t'inquiète pas Neilos)

  19. #19
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Citation Envoyé par bandit boy
    Salut,
    Pour Neilos, je ne comprend pas ta modification:

    Vu que ce que tu as ajouté à ma conversasion ne viens pas de moi !
    et je l'ajouterai en modifiant mon post (ne t'inquiète pas Neilos)
    Erf gros plop. Je ne comprend vraiment pas comment ça c'est fusionné...mauvaise manipulation probablement mais je ne m'en suis pas rendu compte.
    Toutes mes excuses
    Neilos

  20. #20
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Y'a pas de soucis Neilos.
    Du coup je profite de ce post pour donner une fonction qui devrait modifier l'état de la barre des tâches
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if((UINT) SHAppBarMessage(ABM_SETSTATE, &TaskBar) = ABS_ALWAYSONTOP)
    {
       Application->MessageBox("Erreur de changement de propriété","Erreur",MB_OK);
    }
    à tester, je n'ai pas builder sur ce poste. Sinon, je confirmerais surement demain matin.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Dimensions d'une Form, Pixels ou autre ?
    Par Claude_Azoulai dans le forum VB.NET
    Réponses: 7
    Dernier message: 02/05/2011, 16h49
  2. problème dimensions d'une form à l'utilisation
    Par Claude_Azoulai dans le forum Visual Studio
    Réponses: 5
    Dernier message: 31/03/2011, 12h08
  3. Création d'un écran multi form
    Par richard038 dans le forum Delphi
    Réponses: 9
    Dernier message: 20/11/2006, 23h35
  4. [VB6] Dimensions d'une form - résolution écran
    Par eagleleader dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 09/12/2005, 15h10
  5. affichage forme en fonction de la resolution de l'ecran
    Par shiners300 dans le forum C++Builder
    Réponses: 1
    Dernier message: 24/11/2004, 14h33

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