redimensionnement fenêtre basée sur CSplitterWnd
Bonjour,
Je suis novice en MFC et j'ai une petite application qui est composée d'un CSplitterWnd de 2 parties :
à gauche un CTreeView et à droite un CFormView.
Dans le CFormView il y a entre autre 2 CListCtrl avec CButton (cadre autour des listes).
Je voudrais pouvoir redimensionner ma fenêtre si une des liste est cachée
Code:
1 2 3
|
m_ListCtrlElement.ShowWindow(SW_HIDE).
|
Pour redimensionner les différentes parties j'utilise les méthodes :
Code:
1 2 3
|
SetWindowPos(NULL,0,0,new_coor_width,new_coor_height,SWP_NOMOVE | SWP_NOZORDER);
|
sur CListCtrl de ma liste à cacher, sur le cadre qui l'entour, et sur la CFormView.
Je fais après un
Code:
1 2 3
|
GetParentFrame()->RecalcLayout();
ResizeParentToFit(); |
dans ma CFormView après les SetWindowsPos.
Ma fenêtre est bien retaillée, mais un scroll apparait (comme si redimensionnement manuel).
J'ai essayé le ShowScrollBar(SB_VERT,FALSE) pour la CFormView et MainFrame, pas de succès.:cry:
Comment redimensionner la fenêtre comme si celle-ci n'avait qu'une CListCtrl d'origine (pas de scroll bar qui apparaît) ?
Merci pour votre aide,
Xavier.
exemple code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
CRect RectCadreRigthView; //CFormView
GetClientRect(RectCadreRigthView);
CRect RectCadreList; //CListCtrl
m_ListCtrlElement.GetClientRect(RectCadreList);
CRect RectCadre; //CButton cadre autour de la CListCtrl
m_StaticCadreRes.GetClientRect(RectCadre);
m_ListCtrlElement.ShowWindow(SW_HIDE);
m_ListCtrlElement.SetWindowPos(NULL,0,0,0,0,SWP_NOMOVE | SWP_NOZORDER);
m_StaticCadreRes.SetWindowPos(NULL,0,0,RectCadre.Width(),RectCadre.Height()-RectCadreList.Height(),SWP_NOMOVE | SWP_NOZORDER);
SetWindowPos(NULL,0,0,RectCadreRigthView.Width(),RectCadreRigthView.Height()-RectCadreList.Height(),SWP_NOMOVE | SWP_NOZORDER);
GetParentFrame()->SetWindowPos(NULL,0,0,rectFrame.Width(),rectFrame.Height()-RectCadreList.Height(),SWP_NOMOVE | SWP_NOZORDER);
ShowScrollBar(SB_VERT,FALSE);
GetParentFrame()->ShowScrollBar(SB_VERT,FALSE);
GetParentFrame()->RecalcLayout();
ResizeParentToFit(); |
pense à utiliser la balise de code ,Merci Farscape
suite redimensionnement CSplitterWind
Merci pour la réponse, je teste les solutions dès que possible.
Et merci pour ta FAQ C++ qui m'est bien utile.
Xavier.