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 :

[VC6][MFC] Impossible de donner la bonne taille à la fenêtre d'une CComboBox


Sujet :

MFC

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 225
    Par défaut [VC6][MFC] Impossible de donner la bonne taille à la fenêtre d'une CComboBox
    Bonsoir à tout le monde !

    J'ai un soucis avec une CComboBox. Je créé une instance de CComboBox dynamiquement de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // LEFT=0, TOP=0, RIGHT=100, BOTTOM=20
    CRect l_rect = this->m_rctRect;
    l_rect.DeflateRect(1, 1);
     
    this->m_pCombo = new CComboBox;
    this->m_pCombo->Create(CBS_DROPDOWNLIST|CBS_AUTOHSCROLL|CBS_SORT|WS_CHILD|WS_VISIBLE, l_rect, CWnd::FromHandle(this->m_pParent->GetSafeHwnd()), 1);
    this->m_pCombo->SetFont(this->m_pFont);
    this->m_pCombo->AddString(_T("ITEM1"));
    this->m_pCombo->AddString(_T("ITEM2"));
    this->m_pCombo->AddString(_T("ITEM3"));
    this->m_pCombo->AddString(_T("ITEM4"));
    Le problème que je constate est que la hauteur de ma combo déborde du rectangle dans lequel elle doit s'afficher et je ne sais pas pourquoi ... existe t'il une subtilité concernant le rectangle à passer à la création de la combo ? S'agit il bien du rectangle englobant la combo ou bien du rectangle associé à la zône d'édition de la combo ?

    Lorsque j'utilise un contrôle CEdit à la place du CComboBox, le CEdit s'affiche bien dans le rectangle que je lui donne ... je ne vois pas trop ce qui cloche avec le CComboBox. Est ce qu'il faut utiliser la méthode SetItemHeight pour fixer la taille de la combo ?

    Dans mon cas, j'aimerai que ma combo s'affiche bien dans le rectangle que je lui donne .. si quelqu'un a une idée je suis prenneur.

    D'avance merci.

  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 , je ne suis pas sur d'avoir bien compris mais..
    une comboxbox a une taille bien définit en hauteur , si ton rectangle n'est pas assez haut ça doit correspondre a ton problème.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 225
    Par défaut
    Ce que je fais c'est dessiner un rectangle de 20 pixels de hauteur et de 100 pixels de largeur. Je dessine un contour autour de mon rectangle. Ensuite je réduit la largeur et hauteur de mon rectangle (via DeflateRect) et je créé ma combo en lui donnant le nouveau rectangle.

    Le résultat que j'attendais est de voir ma combo s'afficher dans mon rectangle sans qu'elle ne s'affiche par dessus le contour que j'ai dessiné mais ce que j'ai comme résultat c'est que ma combo déborde et masque le bas du contour de mon rectangle.

    Je vais essayer de trouver comment ajouter une image à mon message histoire de voir plus précisément ce que j'ai comme problème.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 225
    Par défaut
    Voici donc mon problème en photo
    Images attachées Images attachées   

  5. #5
    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
    moi je tenterais de définir la hauteur avec la valeur de
    GetSystemMetrics(SM_CYHSCROLL)

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 225
    Par défaut
    J'ai essayé maisça ne change rien.

    Par contre, j'ai essayé en changeant la taille de la police (taille 18 pour les copies d'écrans que j'ai envoyé). En mettant 8 au lieu de 18 ma combo est maintenant beaucoup plus petite que le rectangle ... ce qui est donc le facteur prépondérant sur lequel s'appui les MFC pour déterminer la hauteur de la combo, pour assurer que le texte ne sera pas tronqué j'imagine, ce qui n'est pas totalement délirant je trouve.

    J'ai bien essayé de préciser le style CBS_NOINTEGRALHEIGHT à la création de ma combo box mais ça ne change rien à mon problème, la hauteur de la combo se base sur la taille de la police plutôt que sur la taille du rectangle qu'on lui donne à la création.

  7. #7
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    salut,

    regarde la méthode CComboBox :: SetItemHeight
    --> http://msdn.microsoft.com/en-us/libr...yt(VS.80).aspx

    la valeur -1 sert à régler la hauteur du controle

    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pièce jointe, bonne taille mais lecture impossible !
    Par malabarbe dans le forum Langage
    Réponses: 5
    Dernier message: 11/06/2008, 03h12
  2. Réponses: 1
    Dernier message: 30/12/2005, 17h14
  3. Réponses: 4
    Dernier message: 14/06/2004, 09h29
  4. Réponses: 7
    Dernier message: 07/06/2004, 10h42
  5. Réponses: 6
    Dernier message: 14/02/2003, 16h52

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