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
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
salut,
pour bloquer le splitter :
il faut faire une classe derivée de CSplitterWnd et surchargée la fonction:
pour l'epaisseur je ne suis pas sur que ce soit possible directement il faudra certainement reprendre la main sur le dessin voir OnDrawSplitter .
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 ;}
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
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.
tu baisses bien vite les bras![]()
pour le splitter fin essaye de mettre ça dans le constructeur de la nouvelle classe:
pour le curseur ça doit pas etre dur de le courcircuite .
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
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
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); }
bien la classe definitive:
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
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); }
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; }![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
Partager