[api] Définir une police pour toute la fenêtre

Résolu
cs_hoGan Messages postés 20 Date d'inscription samedi 22 mai 2004 Statut Membre Dernière intervention 7 décembre 2005 - 2 nov. 2005 à 20:02
cs_hoGan Messages postés 20 Date d'inscription samedi 22 mai 2004 Statut Membre Dernière intervention 7 décembre 2005 - 3 nov. 2005 à 18:49
Bonjour,
tout est dans le titre: j'aimerais définir moi-même une police par défaut; comment faire?

sinon, est-ce que quelqu'un sait m'expliquer comment utiliser WM_SETFONT ?
j'ai vaguement tenté ceci, sans résultat ^^ :
SendMessage( handle_combobox , WM_SETFONT , 0 , (LPARAM)"Tahoma" );
... je suppose que WM_SETFONT doit être traité dans LRESULT CALLBACK WindowProcedure(), mais je ne vois pas comment :(

6 réponses

cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
2 nov. 2005 à 22:20
Il faut passer en wparam un handle sur une font prealablement créée par un appel a CreateFont() ou CreateFontIndirect().

+2(p - n)
3
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
3 nov. 2005 à 03:39
Salut,

Pour créer une police tu fais par exemple:

HFONT police = CreateFont(26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Tahoma");



Pour appliquer cette police à tous les controles enfants de la fenêtre tu fais:

HWND enfant=GetWindow(hWnd,GW_CHILD);

do

{

SendMessage(enfant,WM_SETFONT,(WPARAM)police,0);

enfant=GetWindow(enfant,GW_HWNDNEXT);

}while (enfant);



Pour supprimer cette police là où ton programme n'en a plus besoin tu fais:

DeleteObject(police);
0
cs_hoGan Messages postés 20 Date d'inscription samedi 22 mai 2004 Statut Membre Dernière intervention 7 décembre 2005
3 nov. 2005 à 10:59
merci =)
0
cs_hoGan Messages postés 20 Date d'inscription samedi 22 mai 2004 Statut Membre Dernière intervention 7 décembre 2005
3 nov. 2005 à 11:09
:O

par contre raccp, ton code ne marche pas
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
3 nov. 2005 à 14:59
Voici un aperçu de ce que tu dois faire:

LRESULT CALLBACK WndProc(HWND hWnd, ............. )

{

static HFONT police;

//............

case WM_CREATE:

//.............

// Tous les controles doivent être déjà créés

police = CreateFont(26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Tahoma");

HWND enfant;

enfant=GetWindow(hWnd,GW_CHILD);
do
{
SendMessage(enfant,WM_SETFONT,(WPARAM)police,0);
enfant=GetWindow(enfant,GW_HWNDNEXT);
}while (enfant);

// .........

break;



case WM_CLOSE:

DeleteObject(police);

//.........

break;

}

Normalement ça doit marcher.
0
cs_hoGan Messages postés 20 Date d'inscription samedi 22 mai 2004 Statut Membre Dernière intervention 7 décembre 2005
3 nov. 2005 à 18:49
ok c'est parfait !

merci beaucoup
0
Rejoignez-nous