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 :

Tooolbar sur Scrollview


Sujet :

MFC

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 47
    Points : 17
    Points
    17
    Par défaut Tooolbar sur Scrollview
    Bonjour!
    J'ai créé un CScrollView et j'ai mis le code suivant dans le OnCreate :
    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
    	//create toolbar tools
    	BOOL bCreationDone = m_wndToolBar3D.CreateEx(
    		this,
    		TBSTYLE_FLAT,
    		WS_CHILD | WS_VISIBLE | CBRS_RIGHT  | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC,
    		CRect(0,0,0,0),
    		IDW_TOOLBAR_3DFRAME
    	);
       BOOL bLoadDone = m_wndToolBar3D.LoadToolBar(IDR_3DFRAME);
    	if (bCreationDone && bLoadDone)
    	{
    		TRACE0("Failed to create toolbar 3D Frame\n");
    		return FALSE;      // fail to create
    	}
    	//m_wndToolBar3D.AddDropDownButton(ID_TOOL_PROFILE_MONO, IDR_TOOLS_POPUP, TRUE,0);
    	m_wndToolBar3D.SetWindowText("3D Frame tools");
    	m_wndToolBar3D.EnableDockingEx(CBRS_ALIGN_ANY, CBRS_XT_ALL_FLAT);
    Le hic, c'est que ça plante au moment du CreateEx. Pourquoi? Est-ce impossible de mettre une toolbar sur autre chose qu'un CFrameWnd :
    Y'a-t-il d'autres étapes que j'aurais zappé, parce que d'après la doc il suffit de
    1. Create a toolbar resource.
    2. Construct the CToolBar object.
    3. Call the Create (or CreateEx) function to create the Windows toolbar and attach it to the CToolBar object.
    4. Call LoadToolBar to load the toolbar resource
    et je crois avoir tout fait correctement...

  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,
    quelque soit le type de view construis ta toolbar dans la MDIChild en MDI ou la MainFrame en SDI.
    http://c.developpez.com/faq/vc/?page...Bar#AddToolBar

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 47
    Points : 17
    Points
    17
    Par défaut
    D'accord mais moi je voudrais qu'elle soit placée et dockée dans ma super CScrollView et pas la MainFrame
    Il faut donc la créer dans la MainFrame et la mettre à disposition dans la CScrollView? Si oui, comment je dis qu'elle "appartient" à la CSCrollView?

    Edit : je viens de tester, la toolbar est correctement créée et ajoutée à la mainframe. Bon maintenant reste le problème cité : comment faire pour qu'elle soit attachée à ma scrollview. Car en fait j'ai une scrollview dans chaque document donc j'aimerais avoir une scrollbar dans chaque document...

  4. #4
    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
    re,
    tu as mal lu ce que j'ai dis:
    ton projet est apparemment MDI ,donc c'est dans la child qu'il faut mettre en place la toolbar ...
    dans InitInstance tu dois avoir quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    	CMultiDocTemplate* pDocTemplate;
    	pDocTemplate = new CMultiDocTemplate(
    		IDR_TESTDLTYPE,
    		RUNTIME_CLASS(CTestdlgBarMDIDoc),
    		RUNTIME_CLASS(CChildFrame), // custom MDI child frame
    		RUNTIME_CLASS(CTestdlgBarMDIView));
    	AddDocTemplate(pDocTemplate);
    pour ta view ,dans mon exemple la toolbar doit etre placée dans la classe CChildFrame .


  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 47
    Points : 17
    Points
    17
    Par défaut
    YEAH c'est cool Merci j'ai maintenant ma toolbar dans mon document fils
    On avance, mais cette satanée toolbar n'est toujours pas dans mon cscrollview

  6. #6
    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
    Citation Envoyé par Marekh
    YEAH c'est cool Merci j'ai maintenant ma toolbar dans mon document fils
    On avance, mais cette satanée toolbar n'est toujours pas dans mon cscrollview
    hum tu peux mettre une copie d'écran du resultat ?


  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 47
    Points : 17
    Points
    17
    Par défaut
    En fait le problème vient du fait que mon document fils contient un CScrollView . Le CScrollView n'est pas le document fils mais en fait partie.
    En fait le CScrollView n'est pas tout le temps affiché, et naturellement j'aimerais que la toolbar soit visible en même temps que le CScrollView
    Puisque cette toolbar doit être attachée à ce contrôle, autant qu'elle se comporte comme lui
    Voici ce que j'ai actuellement :

  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
    salut,
    c'est surtout que ton application est SDI et que tu as mis en place un splitter.

    il faudra utiliser la fonction DockControlBar:
    Citation Envoyé par MSDN
    CFrameWnd:ockControlBar
    void DockControlBar( CControlBar * pBar, UINT nDockBarID = 0, LPCRECT lpRect = NULL );
    et voir aussi cet enfilade de post:
    http://www.developpez.net/forums/vie...dockcontrolbar


  9. #9
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 47
    Points : 17
    Points
    17
    Par défaut
    Non c'est bien du MDI, mais j'ai mis un document sans la fenêtre mère
    Je n'ai pas bien compris ta solution... Je dois donner le rectangle bleu (cf screenshot) comme lpRect?
    Parce que j'arrive aussi à la docker à droite, mais c'est toujours pas dans le CScrollView. Et puis moi j'aimerais que l'utilisateur puisse balader la toolbar et la docker n'importe où dans la CScrollView

  10. #10
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 47
    Points : 17
    Points
    17
    Par défaut
    Est-ce que faire dériver ma CScrollView d'un CFrameWnd serait une bonne solution :

  11. #11
    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,
    Nan tu vas te fourvoyer (ça ne fonctionnerait pas de toute façon)
    Un toolbar comme dit précédemment se définit dans la MDIChild .
    Qui est dérivée de CFrameWnd
    Ta child comporte un splitter fournissant deux vues, la toolbar est a même de se docker (si elle a les bonnes options) sur l’ensemble de la child donc les deux vues.
    Pour le placement a droite il faut essayer de jouer avec la fonction DockControlBar
    En fournissant des coordonnées correctes.

  12. #12
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 47
    Points : 17
    Points
    17
    Par défaut
    Donc je lui passe en 3ème paramètre l'emplacement de la fenêtre où je souhaite docker ma toolbar c'est bien ça? Mais dans ce cas l'utilisateur ne pourra pas à loisir la docker contre les 4 côtés du CScrollView, si? La toobar sera fixée à 1 côté, non?

Discussions similaires

  1. [Débutant] Scrollviewer et impacts sur les column d'un datagrid
    Par Nanais19 dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 25/10/2013, 15h25
  2. [XCode] Label sur ScrollView xcode 4.5.2
    Par Aimen.S dans le forum XCode
    Réponses: 4
    Dernier message: 12/02/2013, 13h28
  3. [dev] Evenement sur scrollView et fils
    Par cybersplash dans le forum Objective-C
    Réponses: 1
    Dernier message: 11/08/2008, 17h31
  4. [Kylix] Kylix embarqué sur PDA ?
    Par Anonymous dans le forum NoSQL
    Réponses: 10
    Dernier message: 29/11/2002, 13h59
  5. F.A.Q, Doc, cours, tutoriels sur JBuilder
    Par Ricky81 dans le forum JBuilder
    Réponses: 0
    Dernier message: 14/03/2002, 15h28

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