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

MFC Discussion :

[MFC] - MDI : CDialogBar positionnement dans l'environnement


Sujet :

MFC

  1. #1
    Membre régulier
    Avatar de Alice9
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2004
    Messages : 124
    Points : 85
    Points
    85
    Par défaut [MFC] - MDI : CDialogBar positionnement dans l'environnement
    Bonjour,

    Dans une MDI, j'ai créé 2 boîtes flottantes (CDialogBar). Je demande à l'application de les afficher de manière à ce qu'elles soient accrochées sur le bord haut de ma fenêtre principale, par défaut .

    J'obtiens bien mes 2 boîtes accrochées mais l'une en dessous de l'autre :

    menu
    -----------
    Boîte 1 ||
    --------------
    Boîte 2 ||
    ------------------

    je voudrais les mettre plutôt accrocher en haut mais l'une à côté de l'autre :

    menu
    ----------------------------------
    boîte 1 || boite 2 ||
    ----------------------------------

    Je pensais que c'était défini dans le style de la dialogBar lors de la création de ces boîte mais hormis les styles CBRS_TOP/LEFT/RIGTH/BOTTOM que nous ne pouvons pas combiner, je n'ai rien trouvé qui irait dans ce sens....

    Auriez vous une idée de la solution ?

    Merci

    Alice

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    est ce que tu arrives a le faire manuellement en les positionnant avec la souris ?
    si oui essaye un movewindow .

  3. #3
    Membre régulier
    Avatar de Alice9
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2004
    Messages : 124
    Points : 85
    Points
    85
    Par défaut re
    Salut Farscape,

    effectivement, avec la souris ça marche . je vais essayer le movewindow.

    je te tiens au courant.

    A+

    Alice

  4. #4
    Membre régulier
    Avatar de Alice9
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2004
    Messages : 124
    Points : 85
    Points
    85
    Par défaut re 2
    Avec moveWindow, je peux décaler ma dialog bar vers la droite ou la gauche, mais je n'arrive pas à la mettre au même niveau que ma 1ère dialogbar :

    menu
    ------------------------------------
    Boîte 1 ||
    ------------------------------------
    ..................|| Boîte 2 ||
    ------------------------------------
    A+

    Alice

  5. #5
    Membre régulier
    Avatar de Alice9
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2004
    Messages : 124
    Points : 85
    Points
    85
    Par défaut re
    Bonjour,

    je me permets de relancer le sujet car il me faut trouver d'urgence la solution à ce problème....

    m_dlgBar_A et m_dlgBar_B sont 2 boîtes de dialogues flottantes de type CDialogBar.

    m_dlgBar_A est créée par défaut agrippée en haut de l'application avec la fonction enableDocking à l'état CBRS_ALIGN_ANY (elle peut s'accrocher sur tous les bords)

    m_dlgBar_B est créée par défaut agrippée en haut de l'application avec la possibilité comme pour A de s'accrocher sur tous les bords.

    Souhaitant placer B à la droite de A en haut de l'application :

    -------------------------------------------------------------------
    Fichier | Afficher | ? -------------------------------------------
    -------------------------------------------------------------------
    || DialogA | || DialogB | ---------------------------------------
    -------------------------------------------------------------------

    j'ai essayé le code suivant qui normalement place B à la droite de A en haut de l'application :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    DockControlBar(&m_dlgBar_A, AFX_IDW_DOCKBAR_TOP);
     
    CRect rcB, rcA;
    m_dlgBar_A.GetWindowRect(&rcA);
    m_dlgBar_B.GetWindowRect(&rcB);
    rcB.left = 800 ;
    rcB.right = rcB.right + 800 ;
    rcB.top =0 ;
    rcB.bottom = 0 ;
    DockControlBar(&m_dlgBar_B, AFX_IDW_DOCKBAR_TOP, &rcB);
     
    RecalcLayout();
    Hors j'obtiens maintenant :

    -------------------------------------------------------------------
    Fichier | Afficher | ? ---------------------------------------------
    -------------------------------------------------------------------
    ---------------------- || DialogB | -------------------------------
    ||Dialog A | -----------------------------------------------------
    -------------------------------------------------------------------



    Avez vous déjà traité ce cas ?

    J'ai essayé avec un MoveWindow sur B mais je ne peux que la décaler vers la droite et absolumment pas la hisser à la même hauteur que A ....

    Alice

  6. #6
    Membre averti
    Avatar de bigquick
    Profil pro
    Inscrit en
    Août 2002
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 356
    Points : 353
    Points
    353
    Par défaut
    Salut,

    Ca ressemble beaucoup a un topic que j'avais créé il y a un moment, sauf que je voulais l'inverse:
    - ma barre était verticale
    - MFC les placait cote à cote
    - je les voulais l'un au dessus de l'autre

    Il faut croire qu'il fait jamais ce qu'on veut

    Enfin voilà le lien:
    http://www.developpez.net/forums/vie...024&highlight=

    Mais pas grand chose avait été dit ... je ne sais pas si c'est faisable ....

    bigquick

  7. #7
    Membre régulier
    Avatar de Alice9
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2004
    Messages : 124
    Points : 85
    Points
    85
    Par défaut
    Tu as tout a fait compris ce que je cherche à faire.

    Que tu cherches à placer les boîtes l'une en dessous de l'autre quand elles sont aggrippées à gauche ou que les boîtes soient alignés sur la même ligne quand elles sont aggrippées en haut est exactement le même problème.

    Donc si tu as réussi pour l'un tu sait faire pour l'autre.

    d'où ma question : est ce que tu as finalement réussi à mettre tes boîtes l'une en dessous de l'autre lorsqu'elles sont aggrippées à gauche ?

    Si oui comment as tu fait ?

    Alice

  8. #8
    Membre averti
    Avatar de bigquick
    Profil pro
    Inscrit en
    Août 2002
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 356
    Points : 353
    Points
    353
    Par défaut
    Bah en fait mes DialogBars pouvaient être dockées ou flottantes....
    Et au lancement du programme, je voulais qu'elles soient dockées l'une au dessus de l'autre ....

    Mais malheureusement, je n'ai jamais reussi à obtenir ce resultat là (malgré tous les parametres essayés, les SetWindowPos, etc ...) du coup j'ai opté pour des DialogBars flottantes au démarrage ... et l'utilisateur peut les docker comme il veut ensuite avec sa souris

    Donc en gros j'ai plus contourné que résolu ....
    Désolé


    bigquick

  9. #9
    Membre régulier
    Avatar de Alice9
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2004
    Messages : 124
    Points : 85
    Points
    85
    Par défaut fin
    :trouve:

    Pour la solution :

    Une fois que les barres sont créées de manière dockées :

    -------------------------------------------------------------------
    Fichier | Afficher | ? ---------------------------------------------
    -------------------------------------------------------------------
    ||Dialog A | -----------------------------------------------------

    ||Dialog B | -----------------------------------------------------
    -------------------------------------------------------------------

    Utiliser le bout de code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    RECT rcDlgBar;
       rcDlgBar.top = 100 ;
       rcDlgBar.bottom = 100 ;
       rcDlgBar.left = 500 ;
       rcDlgBar.right = 500 ;
    	DockControlBar(&m_dlgBar_B, AFX_IDW_DOCKBAR_TOP, &rcDlgBar);
    -------------------------------------------------------------------
    Fichier | Afficher | ? -------------------------------------------
    -------------------------------------------------------------------
    ||Dialog A | ||Dialog B | --------------------------------------
    -------------------------------------------------------------------

    -> Dans mon cas 500 = largeur max de ma DialogBar A
    -> et 100 = top de ma DialogBar A = top de ma DialogBar B


  10. #10
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut

    comme quoi de persévérer ça paye...

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/04/2008, 17h37
  2. Intégration d'une application MFC MDI dans une DLL
    Par AYARA Adel dans le forum MFC
    Réponses: 3
    Dernier message: 03/03/2008, 20h11
  3. [MFC] - MDI : CDialogBar resize....
    Par Alice9 dans le forum MFC
    Réponses: 5
    Dernier message: 18/02/2005, 17h12
  4. Réponses: 12
    Dernier message: 15/02/2005, 15h34
  5. Réponses: 12
    Dernier message: 02/02/2005, 16h52

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