begin process at 2012 02 10 21:04:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

MFC

 > 

Fonte d'un contôle non ownerdraw


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Fonte d'un contôle non ownerdraw

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ée dans : fonte, formview, dimensions, contrôles, ownerdraw


Répondre à ce message

Sujets en rapport avec ce message

Visibilité des boîtes de dialogues. [ par rachid1245 ] Bonjour à tous, Voilà j’ai créé une application VC6 basée sur une boîte de dialogue. En fait cette boîte de dialogue existe en plusieurs copies avec l Classe Array multidimensionnelle [ par vdvince2015 ] Bonjour, je voudrais créer une classe array qui puisse gérer des tableaux de une à plusieurs dimensions. je pourrais utiliser plusieurs classes diffé Tableau dynamique à 2 dimensions [ par JLO68 ] Bonjour à toutes et tous je débute en vba excel2007 et je n'arrive pas a me dépatouiller avec un tableau à deux dimensions. le probleme est qu'il comp Utilisation des classes [ par andrebernard ] Bonjour à tous Voila je viens de découvrir que les contrôles sont créés par la même classe que les fenêtres [^^peur] [code=cpp]WNDCLASS wc; wc.c Connaître les dimensions d'un contrôle static pour y afficher du texte [ par Albanderuaz ] Bonsoir à tous! J'utilise vc++ 2008. Je dispose d'un contrôle static dans une boîte de dialogue. Connaissant la police de caractères utilisée ainsi Tableau deux dimensions: remplissage rapide des lignes [ par skudFred ] Hello à tous, Une question je pense très simple pour vous spécialistes du C++ [^^happy17] ! J'ai un tableau de int à deux dimensions : int tab[10][8 [C++ avec API Win32] Créer des contrôles dans la fenêtre principale [ par FineLizzyX ] Bonjour, Je souhaite utiliser la fenêtre principale de mon appli Win32 pour afficher les formulaires de saisie. Au départ, je n'affiche rien, puis, à Problème avec dialogbox de dialogbox [ par ArthurAuguste ] Bonjour, J’ai une première dialogbox (dialogbox1) modale décrite dans le fichier ressource que je lance par la fonction dialogbox avec sa propre callb Tableau à deux dimensions : affichage [ par hadydelabe ] Bonjour ou bonsoir selon le temps que mon message vous parviendra. Je voudrai afficher un certains nombre caractère d'un tableau à deux dimensions ma 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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,905 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales