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

Signaler
Messages postés
20
Date d'inscription
samedi 22 mai 2004
Statut
Membre
Dernière intervention
7 décembre 2005
-
Messages postés
20
Date d'inscription
samedi 22 mai 2004
Statut
Membre
Dernière intervention
7 décembre 2005
-
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

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

+2(p - n)
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
12
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);
Messages postés
20
Date d'inscription
samedi 22 mai 2004
Statut
Membre
Dernière intervention
7 décembre 2005

merci =)
Messages postés
20
Date d'inscription
samedi 22 mai 2004
Statut
Membre
Dernière intervention
7 décembre 2005

:O

par contre raccp, ton code ne marche pas
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
12
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.
Messages postés
20
Date d'inscription
samedi 22 mai 2004
Statut
Membre
Dernière intervention
7 décembre 2005

ok c'est parfait !

merci beaucoup