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 :

Barre d'état / CDialogBar dans un CSplitterWnd


Sujet :

MFC

  1. #1
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut Barre d'état / CDialogBar dans un CSplitterWnd
    Bonjour,

    J'ai une CMDIChildWnd partagée verticalement par un CSplitterWnd ( 1 barre verticale -mobile- au milieu de cette CMDIChildWnd).
    Je voudrais savoir comment mettre un barre d'état ou une CDialogBar dans la
    partie droite uniquement de cette fenêtre fille.

    Merci de vos réponses.

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 398
    Par défaut
    Normalement, chaque partie délimité par le splitter est une classe séparée. Tu dois donc pouvoir y mettre ta barre d'état...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut
    Bonjour,

    Effectivement, c'est une CListView en ce qui me concerne.
    Mais j'ai essayé ( cf FAQ VC++ pour CDialogBar )et ça n'a rien donné....

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 398
    Par défaut
    Tu devrais peut-être essayer à la place d'une CListView, une CFormView contenant un CListCtrl...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut
    Salut,

    Je n'envisage pas de le faire, question d' hestétique..

    Je veux vraiment faire une CDialogBarre ou une barre d'état dans la moitié
    de droite comme dans Enterprise Manager de SQL Server où est indiqué le
    nombre de tables d'une BD quand on clique à gauche sur l'icône table.

    Je continue à chercher quand même de mon côté.

    A+

    Sinon Farscape, t'as une idée ?

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Comment as-tu essayé de créer ta status bar? Est-elle bien fille du panneau de droite (donc dans cette classe et pas dans la classe CMDIChildWnd)?

  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 398
    Par défaut
    Le problème, c'est que créée ainsi, elle devient directement fille d'une CListView, c'est-à-dire, fille d'un CListCtrl (suite à un code hautement goret, la CListView ne "contient" pas un CListCtrl, elle partage ses données d'une manière dangereusement schizo).

    Mais surtout, je ne vois pas le problème d'esthétique avec une CFormView contenant un CListCtrl... Tu sais, le CListCtrl et la CDialogBar peuvent couvrir la totalité de ta CFormView...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut
    Pour 3DArchi:

    => J'ai récupéré un pointer de type CWnd* avec la fonction suivante:
    m_monSplit.GetPane(0,1) ( Peut-être aurai-je du faire un cast sur
    un CFrameWnd... j'essaie ça rapidement).
    => J'ai ensuite voulu créer ma dialogueBar de la manière suivante:
    m_maDialogBar.Create(leFameuxPointeur,IDD_xx,CBRS_xx,IDD_xxx)
    ( Le tout dans le OnCreate de la fenêtre Fille ).
    m_maDialogBar et m_monSplit étant des membres de cette fenêtre fille.

    Pour Médinoc:

    => Au delà de l'hestétique , ça représente aussi une trop grosse charge de
    travail

  9. #9
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    salut

    Au delà de l'hestétique , ça représente aussi une trop grosse charge de travail
    Dans tous les cas, ça representera une grosse charge de travail !

    Faire un Status Bar, fenetre fille, d'une CListCtrl ne fonctionnera pas ...

    CStatusBar et CDialogBar dérive de CControlBar. Jette un oeil dans les sources MFC du coté de CFrameWnd::RecalcLayout()

    Il te faudrait une CFrameWnd qui puisse avoir le style WS_CHILD ... mais pas réalisable avec la classe actuelle CFrameWnd

    Donc, il te reste à construire une classe qui sera une fenetre "conteneur" de ta vue et de ta Control Bar, qui réimplémentera au minimum la fonction CFrameWnd::RecalcLayout() et le OnSize() qui appellera le RecalcLayout()

    et j'imagine qu'il y aura beaucoup d'autres joyeusetées (comme le routage des commandes ... par ex)

    @+

  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
    Par défaut
    salut,
    en passant par une miniframe ça "devrait" passer .
    en utilisant la même technique pour implémenter plusieurs splitters.
    faq: http://cpp.developpez.com/faq/vc/?pa...litterMultiple

  11. #11
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut
    Salut,

    Bon, la technique du "miniframe" ne passe pas ainsi que celle de
    l'implémentation de plusieurs splitters.

    Voici un extrait de code dans lequel je teste le retour de la fonction create
    de ma barre de dialogue:

    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
     
    BOOL CChildFrame::OnCreateClient( LPCREATESTRUCT /*lpcs*/,
    	CCreateContext* pContext)
    {
    	// create splitter window
    	if (!m_wndSplitter.CreateStatic(this, 1, 2))
    		return FALSE;
     
    	if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(100, 100), pContext) ||
    		!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CModelView), CSize(100, 100), pContext))
    	{
    		m_wndSplitter.DestroyWindow();
    		return FALSE;
    	}
     
    	CWnd *pWnd=m_wndSplitter.GetPane(0,1);
     
    	if(m_barre.Create(pWnd,IDD_DIALOGBAR,CBRS_BOTTOM,IDD_DIALOGBAR)==TRUE)
    	{
    		MessageBox("Ok!");
    		m_wndSplitter.RecalcLayout();
    	}
    	else
    		MessageBox("Problème!");
     
    	return TRUE;
    }
    Je me trouve dans le cas où c'est Ok mais je ne la vois pas...
    Je ne comprends pas qu'en appelant le RecalcLayout du splitter, ça ne marche pas.

    Stephdim, je ne me suis pas lancé dans la surcharge d'une CFrameWnd, je n'ai pas tout bien compris .

Discussions similaires

  1. La barre de statut (ou barre d'état) dans FireFox...
    Par jeyce dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/08/2005, 12h26
  2. Affichage dans la barre d'état
    Par Prue dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 05/07/2005, 12h51
  3. Affichage d'un texte dans la barre d'état!
    Par chuart dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 12/04/2005, 13h47
  4. Pb d'affichage dans barre d'état
    Par linou dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/04/2005, 12h21

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