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