Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Fonte d'un contôle non ownerdraw [ Windows / MFC ] (rachid1245)

lundi 18 août 2008 à 13:13:55 | Fonte d'un contôle non ownerdraw

rachid1245

Bonjour à tous

 

Voilà, je dispose d'une formview  avec différents contrôles.

Je dispose également d'une classe Cresizer qui me permet de redimensionner les contrôles en fonction de la dimension de fenêtre parent (formview). Les contrôles sont redimensionnés parfaitement lorsque je change les dimensions de la formview.

Quand je maximise la fenêtre, les contrôles changent de dimensions et deviennent  "plus grands" et parfois la taille de la fonte utilisée n'est plus adaptée aux nouvelles dimensions.

Pour changer les fontes des contrôles qui peuvent être ownerdraw j'utilise la fonction DrawItem dans laquelle je change la taille de la fonte en fonction de la dimension du contrôle recupérée dynamiquement dans DrawItemStruct.

Mon problème c'est pour un CEdit, je trouve moyen de changer la taille de sa fonte, mais pas de façon dynamique.

Quel message dois-je récupérer pour modifier la fonte dans son handler de façon que la fonte colle parfaitement aux dimensions du contrôle de foçon dynamique.

Je travaille avec MFC.

Merçi d'avance

 


lundi 18 août 2008 à 17:36:33 | Re : Fonte d'un contôle non ownerdraw

racpp

Administrateur CodeS-SourceS
Salut,
En API (sans MFC) il suffit d'envoyer au controle le message WM_SETFONT avec le handle de la police voulue. Exemple:
HFONT police=CreateFont(......);
SendMessage(hwndedit,WM_SETFONT,(WPARAM)police,0);


lundi 18 août 2008 à 20:12:48 | Re : Fonte d'un contôle non ownerdraw

yann_lo_san

Réponse acceptée !

Salut,

il suffit de stocker un CFont dans ta classe FormView et d'utiliser la méthode SetFont de CEdit :
CEdit::SetFont(pfont, TRUE);  // TRUE pour bRedraw

dans la classe FormView :
CFont* m_pfont;

Dans le OnSize du FormView :

Si dimention du controle Cedit > ratio
{
   if( m_pfont )
   {
      if( m_pfont->m_hObject ) m_pfont->DeleteObject();
      delete m_pfont;
   }
   m_pfont = new CFont;
   m_pfont->CreateFont(TAILLE_RATIO, ect...);
   m_edit.SetFont(m_pfont, TRUE);
}


mardi 19 août 2008 à 11:26:12 | Re : Fonte d'un contôle non ownerdraw

rachid1245

Salut et merçi beaucoup pour les tuyaux,

Pour Racpp je précise que le problème n'est pas de changer de font pour le contrôle edit,

J'ai une fonction « SetAdjustedFont() » qui va chercher les dimensions de l'edit et en fonction de la longueur maximale de la chaine de caractère qu'on compte y saisir, va calculer la bonne taille de fonte adaptée pour une très bonne harmonie du texte avec le contrôle.

 

Le problème c'est qu'il faut que cette fonction soit appelée automatiquement à chaque fois que le contrôle est redimensionné.

 

Yann_lo_san a donné le bon tuyau il faut appelé cette fonction dans le OnSize de la fenêtre parent

Ca marche parfaitement

 

Merçi beaucoup.

 




Cette discussion est classé dans : fonte, formview, dimensions, contrôles, ownerdraw


Répondre à ce message

Sujets en rapport avec ce message

débutant MFC : comment faire pour "enable/disable" des contrôles [ par robby ] Bonjour!J'ai vu qu'en MFC certaines API ont une autre syntaxe et je n'arrive pas à trouver comment on peut activer/ désactiver un contrôle.Avant je f Urgent !!! Fonction EditStreamCallback des contrôles RichTextBox [ par appstmd ] Quelqu'un sais-il comment on utilise cette fonction pour affecter à un contrôle RichText d'une boîte de dialogue le contenu d'un variable RTF ?Merci d Pointeurs sur des tableaux de plusieurs dimensions [ par ProGamer ] J'ai besoin de faire des pointeurs sur ce genre de tableaux. Voici comment je m'y prends (et surtout, voici comment ça ne marche pas...):unsigned char tableau [ par zeratul67 ] J'ai une fonction qui doit me renvoyer un tableau à deux dimensions, mais la taille de l'une des ces 2 dimensions est inconue. (tableau: char cp[x][25 Ajouter des contrôles en MFC (VC++) [ par NiFF ] Comment on place sur une feuille MFC des contrôles FileListBox (c'est le nom VB) ,DirListBox, et DriveListBox? Ce sont des zones de fichiers, de dossi MFC : Contrôles style XP [ par NiFF ] Salut tout le monde!J'aimerais mettre des contrôles de style windows XP (boutons bleus et orange, progressbar verte, etc) sur ma feuille MFC. Je pense Pbs avec CPropertySheet et CFormView [ par Tropdemalaveclesapi ] Salut à tousj'ai un léger pb avec ma PropertySheet. Je voudrais l'includre dans un FormView et pas en faire un Modal. En Modal elle marche nickel, mai contrôles indexés [ par aphane ] Quelqu'un saurait-il me dire s'il est possible de créer avec c++builder des contrôles indexés comme dans visual basic.J'explique:je voudrais afficher DEPLACER TOUS LES ELEMENT DUN TABLEAU A 2 DIMENSIONS [ par retaks666 ] j'aimerais savoir si il existe un fonction qui permet de deplacer tous les element d'un tableau d'une "ligne".exemple char a[10][10];coutfonction(a);a tableau deux dimensions et plus sur mapbasic [ par Sfoued2003 ] sltj'aimerai savoir s'il est possible de crée des tableaux (Arrays) de plusieurs dimensions sur mapbasic? et plus axactement une matrice de deux dimen


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,203 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.