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 :

Placement de ma Toolbar


Sujet :

MFC

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut Placement de ma Toolbar
    Bonjour,

    C'est bête mais j'ai déjà passé des heures sans trouver comment on peut simplement positionner les toolbar que l'on crée à l'endroit où on veut (par exemple les unes à la suite des autres, notament le la Toolbar déjà existante).
    Le code ci-dessous ne permet qu'à chaque nouvelle Toolbar de la positionner en-dessous de celles existantes.

    Dans OnCreate de CMainFrm :

    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
     
    ////////////////////////////////////////////////////////////
    ///////////////// LE CODE POUR MA BARRE  D''OUTILS 1/////////
         // Ajoute ma barre d'outils n°1
         int iTBCtlID;
         int i;
     
         // Crée ma barre d'outils n°1
         if (!m_wndMyToolbar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD |
             WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS |
             CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
             !m_wndMyToolbar.LoadToolBar(IDR_MYTOOLBAR))
         {
             TRACE0("Echec de création de la barre d'outils\n");
             return -1;      // Echec de création
         }
         // Trouve le premier bouton dans ma barre d'outils n°1
         iTBCtlID = m_wndMyToolbar.CommandToIndex(ID_FIRST_BOUTON);
         if (iTBCtlID >= 0)
         {
      // Boucle en configurant tous les boutons pour qu'ils agissent
         // comme des boutons radio
             for (i= iTBCtlID; i < (iTBCtlID + 6); i++)
                 m_wndMyToolbar.SetButtonStyle(i, TBSTYLE_BUTTON);
         }
     
         // Active l'ancrage pour ma barre d'outils n°1
         m_wndMyToolbar.EnableDocking(CBRS_ALIGN_ANY);
     
     
         // Ancre ma barre d'outils n°1
         DockControlBar(&m_wndMyToolbar);
     
    ///////////////////////////////////////////////////////
    ////////// FIN DU CODE POUR MA BARRE D'OUTILS 1 //////////

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    : :

  3. #3
    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 il faut proceder au positionnement avec la fonction :
    CFrameWnd:ockControlBar
    void DockControlBar( CControlBar * pBar, UINT nDockBarID = 0, LPCRECT lpRect = NULL );
    voir ce post ou alice9 a rencontré ce probleme:
    http://www.developpez.net/forums/vie...912703#1912703

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    Merci;


    on va dire que c'est résolu mais je suis furieux car ça fait 25 mn que j'essaie de trouver les bons chiffres et pas moyen. Tout d'un coup on y est presque, et je change un tout petit peu l'un des 4 chiffres et la varre part n'importe où!

  5. #5
    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
    et si tu les positionnes a la main dans l'interface .
    et que sur un bouton commande de menu ,tu recuperes toutes les positions avec getwindowrect.
    apres dans ton code :
    tu regardes la premiere et tu exprimes les autres positions en coordonnées relatives par rapport a la premiere.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    J'arrive pas

    J'ai bien fait ce que t'as dit (une option de menu qui contient la fonction GetWindowRect(HWND ???, rect);

    Mais je sais pas comment faire pour aller chercher le HWND de mes toolbar moi!

    Mais quelle galère quand-même pour faire une opération qui devrait être super simple!

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    J'ai essayé ça aussi [dans OnCreate]:

    LPRECT rect;
    m_wndMyToolbar2.CalcWindowRect(rect); -->oui, on peut accéder à CalcWindowRect
    int a;
    a = rect.bottom; -->Non, on ne peut pas récupérer les positions du rectangle

  8. #8
    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
    Lol,
    Tes toolbars sont définies ta frame(SDI) ou mdichild(MDI)
    Tu disposes bien d’une variable membre pour chaque toolbar de la classe CToolbar
    Et bien il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CRect Rect;
    m_myToolbar1.GetWindowRect(&Rect) ;
    // etc...
    non ?

  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
    petite astuce :

    pour ne pas avoir de problème entre 2 boîtes flottantes (genre aligner sur la même ligne et même colonne) fait en sorte que le programme est le temps d'afficher chaque boîte au moin 1 fois avant de placer la suivante

    2nd chose :

    ici m_dlgBar est une instance de CDlgMyDockBar de type CDockBar
    -> par analogie ça devrait être à peu près pareil pour ta toolBar


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    RECT rc ;
    m_dlgBar.GetWindowRect(&rc) ;
    prendre les coordonnées rc.top (x) et rc.left(y) et tu auras les bonnes coordonnées pour placer ta toolBar.

    Bonne chance.

    Alice
    Alice

    A coeur vaillant, rien d'impossible !

  10. #10
    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
    A pas vu Farscape quand j'écrivais ....

    bon ben que la force soit avec toi !

    Alice
    Alice

    A coeur vaillant, rien d'impossible !

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    Alors là, éclate-toi avec cette absurdité:

    CRect Rect;

    m_wndMyToolbar.GetWindowRect(&Rect);
    int a, b, c, d;
    a=Rect.bottom;
    b=Rect.top;
    c=Rect.right;
    d=Rect.left;


    Et bien à chaque fois que je relance le programme, j'obtient des nouvelles valeurs de a=b et de c=d

    a=b=152 et c=d=112, puis a=b=218 et c=d=178, puis 86 et 46, etc.

    Je suis sans voix!

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

Discussions similaires

  1. Toolbar ?
    Par juju92 dans le forum MFC
    Réponses: 4
    Dernier message: 14/02/2004, 18h57
  2. Redimensionner une ToolBar
    Par tscoops dans le forum C++Builder
    Réponses: 2
    Dernier message: 12/11/2003, 16h46
  3. Placement aléatoire
    Par Steph82 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 02/09/2003, 12h07
  4. Toolbar Buttons et paramètres
    Par Lux interior dans le forum XMLRAD
    Réponses: 4
    Dernier message: 13/06/2003, 19h44
  5. Placement des balises avec DTD
    Par Keul125 dans le forum Valider
    Réponses: 4
    Dernier message: 28/05/2003, 12h08

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