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 :

[CEdit] Centrer le texte verticalement


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 45
    Par défaut [CEdit] Centrer le texte verticalement
    Bonjour,

    Est il possible de centrer verticalement le texte d'un CEdit ?
    L'alignement horizontal est trivial mais je ne trouve rien en ce qui concerne l'alignement vertical.

    Cordialement.

  2. #2
    NairodDorian
    Invité(e)
    Par défaut
    Regarde les propriétés de ton contrôle dans le l'éditeur de resource.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 45
    Par défaut
    Citation Envoyé par NairodDorian Voir le message
    Regarde les propriétés de ton contrôle dans le l'éditeur de resource.
    Justement, il n'y a aucune propriete d'alignement vertical (alors qu'il y en a pour l'alignement horizontal d'ou le "trivial" ).

  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
    salut,
    l'alignement dépend de la hauteur de la fonte pas du contrôle...
    donc sauf magouille visuelle je ne vois pas comment tu pourrais faire.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 45
    Par défaut
    J'imagine qu'en réécrivant la fonction OnDraw dans un CEdit custom je dois pouvoir le faire mais bon bof quoi ...

  6. #6
    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,

    soit tu as un edit multiline et tu peux utiliser EM_SETRECT,
    soit tu peux procéder comme ça pour un single line :

    dans CMyEdit.h

    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
     
    class CMyEdit : public CEdit
    {
      DECLARE_DYNAMIC(CMyEdit);
     
    protected:
     
      DECLARE_MESSAGE_MAP()
     
      afx_msg void OnNcCalcSize(BOOL,NCCALCSIZE_PARAMS*);
      afx_msg void OnNcPaint();
     
      LONG m_TopMargin;
      LONG m_BottomMargin;
    };
    dans CMyEdit.cpp:

    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
     
    IMPLEMENT_DYNAMIC(CMyEdit,CEdit)
     
    BEGIN_MESSAGE_MAP(CMyEdit,CEdit)
      ON_WM_NCCALCSIZE()
      ON_WM_NCPAINT()
    END_MESSAGE_MAP
     
    void CMyEdit::OnNcCalcSize(BOOL,NCCALCSIZE_PARAMS *lpncsp)
    {
      lpncsp->rgrc[0].top+=m_TopMargin;
      lpncsp->rgrc[0].bottom-=m_BottomMargin;
    }
     
    void CMyEdit::OnNcPaint()
    {
      CWindowDC dc(this);
     
      CRect rect;
      GetWindowRect(rect);
     
      dc.FillSolidRect(CRect(rect.left,rect.top,rect.right,rect.top+m_TopMargin),RGB(255,255,255));
      dc.FillSolidRect(CRect(rect.left,rect.bottom-m_BottomMargin,rect.right,rect.bottom),RGB(255,255,255));
    }
    c'est juste un exemple, il reste à calculer m_TopMargin et m_BottomMargin (dans PreSubclassWindow() si ton CEdit est dans un dialog)
    ça ne marche pas si ton CEdit à des styles comme WS_BORDER, WS_EX_CLIENTEDGE ...
    la couleur du fond est fixe (RGB(255,255,255)) et ne devrait pas l'etre ...

    il y a un article sur codeguru ou codeproject sur le sujet ... à chercher

    @+

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

Discussions similaires

  1. [CR10] Centrer le texte verticalement
    Par Cirdek dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 18/06/2008, 10h38
  2. ASP.net centrer un text verticalement au milieu d'un LinkButton
    Par zitoun dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 07/05/2007, 10h08
  3. [Word] centrer un texte verticalement
    Par mzt.insat dans le forum Word
    Réponses: 1
    Dernier message: 22/02/2007, 12h52
  4. Réponses: 2
    Dernier message: 20/11/2006, 09h43

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