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] Controler les splitter


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre r�gulier
    Profil pro
    Inscrit en
    F�vrier 2003
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2003
    Messages : 7
    Par d�faut [MFC] Controler les splitter
    Salut,

    J'utilise les splitters pour avoir dans ma fenetre une vue et un formulaire. J'aimerai bloquer la barre du splitter (qu'on ne puisse pas la deplacer avec la souris) et r�duire son �paisseur.

    Merci.

    Toune

  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
    Par d�faut
    salut,
    pour bloquer le splitter :
    il faut faire une classe deriv�e de CSplitterWnd et surcharg�e la fonction:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class CSplitterWndEx : public CSplitterWnd
    {
    // Construction
    public:
    	CSplitterWndEx();
     
    // Attributes
    public:
    	virtual void StartTracking(int ht){return ;}
    pour l'epaisseur je ne suis pas sur que ce soit possible directement il faudra certainement reprendre la main sur le dessin voir OnDrawSplitter .

  3. #3
    Membre r�gulier
    Profil pro
    Inscrit en
    F�vrier 2003
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2003
    Messages : 7
    Par d�faut
    Salut,

    Le blocage de la barre du splitter marche mais on a toujours le changement du curseur de la souris indiquant la possibilit� de d�placer cette barre (donc c'est pas terrible). Pour le changement d'�paisseur de la barre j'ai regard� comme tu as dis OnDrawSplitter mais �a pose des probl�mes d'affichages et au mieux j'arrive a effacer la barre ou � garder la m�me �paisseur (donc encore pas terrible).

    J'aimerai donc savoir si il y a un autre moyen (que les splitter) pour pouvoir cr�er une interface ayant une partie vue (view) et une autre partie formulaire (form).

    Merci.

    Toune.

  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
    Par d�faut
    tu baisses bien vite les bras
    pour le splitter fin essaye de mettre �a dans le constructeur de la nouvelle classe:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    m_cxSplitter=PANE_BORDER;     // = 1
    m_cySplitter=PANE_BORDER;     // = 1
    m_cxBorderShare=PANE_SHARE;   // = 0
    m_cyBorderShare=PANE_SHARE;   // = 0
    m_cxSplitterGap=PANE_GAP;     // = 1
    m_cySplitterGap=PANE_GAP;     // = 1
    pour le curseur �a doit pas etre dur de le courcircuite .

  5. #5
    Membre chevronn�
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Par d�faut
    ben il te suffit dans cette classe de surcharger l'�venement OnSetCUrsor:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    CTaClasseSplitterWnd::OnSetCursor(pWnd, nHitTest, message)
    {
    	if (!m_bBarLocked)
    		{return CWnd::OnSetCursor(pWnd, nHitTest, message);}
    	return CTaClasseSplitterWnd::OnSetCursor(pWnd, nHitTest, message);
     
    }

  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
    Par d�faut
    bien la classe definitive:
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    #define PANE_BORDER 1
    #define PANE_SHARE  0
    #define PANE_GAP 1
     
    class CSplitterWndEx : public CSplitterWnd
    {
    // Construction
    public:
       CSplitterWndEx()
       {
           m_bExTracking=true;
       }
       void SetThinFrame()
       {
            m_cxSplitter=PANE_BORDER;     
            m_cySplitter=PANE_BORDER;     
            m_cxBorderShare=PANE_SHARE;   
            m_cyBorderShare=PANE_SHARE;   
            m_cxSplitterGap=PANE_GAP;     
            m_cySplitterGap=PANE_GAP;   
       }
    // Operations
    public:
        void SetTracking(bool bEnable=true){m_bExTracking=bEnable;}
     
        virtual void StartTracking(int ht)
        {
            if(!m_bExTracking) return ;
            CSplitterWnd::StartTracking(ht);
        } 
       // Overrides
    	// ClassWizard generated virtual function overrides
    	//{{AFX_VIRTUAL(CSplitterWndEx)
    	public:	
    	//}}AFX_VIRTUAL
     
    // Attributes
    public:
     
    bool m_bExTracking;
     
    // Generated message map functions
    protected:
    	//{{AFX_MSG(CSplitterWndEx)	
    	afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
    	afx_msg void OnMouseMove(UINT nFlags, CPoint point);
    	//}}AFX_MSG
    	DECLARE_MESSAGE_MAP()
    };
    // .cpp
    BEGIN_MESSAGE_MAP(CSplitterWndEx, CSplitterWnd)
    	//{{AFX_MSG_MAP(CSplitterWndEx)
    	ON_WM_SETCURSOR()
    	ON_WM_MOUSEMOVE()
    	//}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    //-------------------------------------------------
    BOOL CSplitterWndEx::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
    {
    	// TODO: Add your message handler code here and/or call default
        if(!m_bExTracking) return FALSE;
    	return CSplitterWnd::OnSetCursor(pWnd, nHitTest, message);
    }
    //---------------------------------------
    void CSplitterWndEx::OnMouseMove(UINT nFlags, CPoint point) 
    {
    	// TODO: Add your message handler code here and/or call default
    	if(!m_bExTracking) return ;
    	CSplitterWnd::OnMouseMove(nFlags, point);
    }
    utilisation dans CMainFrame:
    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
     
    BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
    {
        // TODO: Add your specialized code here and/or call the base class
        m_wndSplitter.SetThinFrame(); // bordure fine
        m_wndSplitter.SetTracking(false);// pas de tracking.
    	if (!m_wndSplitter.CreateStatic(this, 1, 2))
    		return FALSE;
     
    	if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CSdiSplitterView), CSize(100, 100), pContext) ||
    		!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CMyFormView), CSize(100, 100), pContext))
    	{
    		m_wndSplitter.DestroyWindow();
    		return FALSE;
    	}
    	return TRUE;
    }

  7. #7
    Membre r�gulier
    Profil pro
    Inscrit en
    F�vrier 2003
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2003
    Messages : 7
    Par d�faut
    Merci

    Ca marche bien et c'est propre!!

    Toune

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 3
    Dernier message: 22/12/2005, 10h43
  2. [mfc]control
    Par marseillais57 dans le forum MFC
    R�ponses: 3
    Dernier message: 02/06/2004, 11h32
  3. [mfc] controle de la souris
    Par arno2004 dans le forum MFC
    R�ponses: 4
    Dernier message: 27/04/2004, 15h22
  4. R�ponses: 6
    Dernier message: 04/01/2004, 20h59
  5. [MFC]Calculer les FPS
    Par inerti@ dans le forum MFC
    R�ponses: 6
    Dernier message: 19/03/2003, 18h22

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