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 :

Position application au démarrage [IDE]


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par défaut Position application au démarrage
    Bonjour,

    je n'arrive pas à positionner mon application comme je le désire au démarrage.
    En fait c'est tout simple, je voudrai que mon appli se positionne en haut à gauche de mon écran, décalée s'il le faut si la barre des tâches se trouve sur la gauche (ou en tout cas que quelque soit la position de la barre des tâches, que mon appli ne se trouve pas positionnée derrière. Je précise que mon appli peut parfaitement rentrer dans l'écran, c'est à dire plus petite que la place dispo à l'écran même avec la barre de tâche)
    J'ai essayer en modifiant les valeurs de "position" mais sans résultat.
    J'arrive à aligner à gauche en affectant "alLeft" à l'attribut "Align" mais alors mon application est redimensionnée ce que je ne souhaite pas.
    Bref sûrement très simple mais impossible de trouver...

    voilà, merci d'avance pour votre aide.
    Pascale38

  2. #2
    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
    Par défaut
    Salut Pascale38
    Peut etre comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    __fastcall TForm1::TForm1(TComponent* Owner)
         : TForm(Owner)
    {
    Form1->Top = 0;
    Form1->Left = 0;
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par défaut
    merci Blondelle mais ça ne marche pas, la fenêtre se retrouve derrière la barre des tâches si celle ci est à gauche.

  4. #4
    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
    Par défaut
    A l'aide d'un utilitaire comme Spy++ ou autre on recupere le nom de la barre de tache, par la meme occasion son Handle pour verifier si notre programme renvoie la meme chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    __fastcall TForm1::TForm1(TComponent* Owner)
         : TForm(Owner)
    {
    HWND h;
    TRect r;
    // on va recuperer le Handle de la barre de tache
    h = FindWindow("Shell_TrayWnd", NULL); 
    // on recupere les dimensions du rectangle de la barre de tache
    GetWindowRect(h, &r);
    Form1->Top = r.Top;
    Form1->Left = r.Right;
    }
    A toi de faire les testes pour savoir l'endroit ou se trouve la barre de taches, afin de positionner la Form

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Par défaut
    Je ferais plutôt comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    RECT rc;
    POINT pt;
    HWND hWnd = GetDesktopWindow();
    GetClientRect(hWnd, rc);
    pt.x = rc.left;
    pt.y = rc.top;
    ClientToScreen(hWnd, &pt);
    Le résultat est à lire dans pt.

    Enfin, si ceci ne fonctionne pas alors l'API Windows a des fonctions dédiées pour retrouver la zone clients du desktop. Mot clés: desktop client area.

    Sinon il me semble que la VCL a également un objet TScreen.

  6. #6
    Membre confirmé Avatar de marcootz
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 159
    Par défaut
    Salut,

    As tu essayer de mettre la propriété BorderStyle de ta form principale sur "bsDialog" ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par défaut
    marcootz,

    BorderStyle à "bsDialog" :
    non seulement ça ne marche pas mieux, mais en plus je perds les icônes de minimisation et de maximisation ce qui est embêtant pour une application !

    yarp,
    je vais essayer ton idée !

    merci
    Pascale38

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par défaut
    merci Yarp,

    grâce à ta piste j'ai découvert l'objet "Screen" de type TScreen :

    La variable globale Screen, de type TScreen, est déjà instanciée pour les applications GUI (interface utilisateur graphique). Utilisez Screen pour obtenir dans l'application des informations sur l'état en cours de l'écran.
    Et il suffit donc de faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    __fastcall TMainForm::TMainForm(TComponent* Owner) : TForm(Owner)
    {
    	RECT rc = Screen->WorkAreaRect;
    	MainForm->Top = rc.top;
    	MainForm->Left = rc.left;
    }
    Et ça marche nickel !!

    merci

    Pascale38

  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Par défaut
    De rien.

    Pour savoir comment faire ça à la main il suffirait d'aller regarder le code de TScreen. Mais ce serait purement académique.

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

Discussions similaires

  1. [C# 2.0] Lancer une application au démarrage de windows
    Par Wave dans le forum Windows Forms
    Réponses: 6
    Dernier message: 26/04/2006, 21h45
  2. Lancement d'une application au démarrage de l'appareil
    Par fleur_de_rose dans le forum MFC
    Réponses: 5
    Dernier message: 27/02/2006, 10h30
  3. Application au démarrage
    Par zegota dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 17/09/2005, 19h03
  4. lancer une application au démarrage de WinXP
    Par Sph@x dans le forum Windows
    Réponses: 6
    Dernier message: 07/04/2004, 18h05

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