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 :

redimensionnement fenêtre basée sur CSplitterWnd


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     m_ListCtrlElement.ShowWindow(SW_HIDE).
    
    Pour redimensionner les différentes parties j'utilise les méthodes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

    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 : 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
     
    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

  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,
    tu peux essayer ça:
    http://cpp.developpez.com/faq/vc/ind...ScaleToFitSize
    sinon il faudra suivant le cas jouer aussi avec le splitter ,voir
    CSplitterWnd::SetRowInfo
    en specifiant une hauteur minimum, et pense à faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    m_wndSplitter.RecalcLayout()
    après...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut 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.

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/10/2011, 09h13
  2. [BPW] Affichage clignotant lors de redimensionnement fenêtre
    Par Alcatîz dans le forum Turbo Pascal
    Réponses: 10
    Dernier message: 24/04/2004, 00h01
  3. Exploitation de base sur un serveur Web
    Par Oz-WereWolf dans le forum Installation
    Réponses: 10
    Dernier message: 07/03/2004, 22h52
  4. Erreur de connexion à ma base sur serveur Debian - Apache
    Par GLDavid dans le forum Installation
    Réponses: 4
    Dernier message: 24/09/2003, 10h29
  5. [VB6] Zone de liste modifiable basée sur un champ
    Par pepper dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 27/11/2002, 13h41

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