Police de caractères de la barre de titre

Le
SAISAS
Bonjour,

j'ai réussi à récupérer la taille de la barre de titre, mais pas sa police
de caractère. Lorsque mon utilisateur personnalise sa police avec l'option
"extra large", le rendu est très mauvais et surtout l'utilisateur n'arrive
pas à lire mon texte.

Quelqu'un aurait-il une solution.

Merci.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacques93
Le #15401041
Bonjour SAISAS,
SAISAS a écrit :
Bonjour,

j'ai réussi à récupérer la taille de la barre de titre, mais pas sa police
de caractère. Lorsque mon utilisateur personnalise sa police avec l'option
"extra large", le rendu est très mauvais et surtout l'utilisateur n'arrive
pas à lire mon texte.

Quelqu'un aurait-il une solution.

Merci.



Tu peux récupérer la police de la barre de titre dans la clé
CaptionFont de la branche :

HKEY_CURRENT_USERControl PanelDesktopWindowMetrics

c'est une donnée de type REG_BINARY, l'offset du nom de la police semble
être 0x1c, et la chaine de caractère en Unicode.

Tu as également les clés :

HKEY_CURRENT_USERControl PanelAppearanceSchemes

et

HKEY_CURRENT_USERControl PanelAppearanceNew Schemes

liées à %Windir%system32ThemesUI.dll

Mais il y a peut être plus simple en regardant ici :

http://vb.mvps.org/samples/project.asp?id=ncmetrics

il y a des pistes par les API's. En regardant

http://vb.mvps.org/samples/code/NCMetrics.zip

qui permet de récupérer ce genre d'informations :


en utilisant entre autre SystemParametersInfo, et en ce qui me concerne,
je retombe bien sur mes pieds :

(CaptionHeight = 25) + (BorderWidth = 1) = 26 (cad pareil que
GetSystemMetrics(SM_CYCAPTION)

et

(CaptionHeight = 35) + (BorderWidth = 1) = 36

Peut être cette API fonctionnera t-elle chez toi

--
Cordialement,

Jacques.
SAISAS
Le #15400761
Merci,

j'ai réussi à récupérer l'info avec SystemParametersInfo, mais je trouve
cela curieux ... même si cela marche.

Call SystemParametersInfo(SPI_GETICONTITLELOGFONT, Len(fontInfo),
fontInfo, 0)
Fsz = -3 - fontInfo.lfHeight

Je ne sais ni pourquoi il me rajoute 3 à la taille de police, ni elle est
avec un signe négatif. Mais cela me donne le résultat.

Cordialement.

"Jacques93" a écrit :

Bonjour SAISAS,
SAISAS a écrit :
> Bonjour,
>
> j'ai réussi à récupérer la taille de la barre de titre, mais pas sa police
> de caractère. Lorsque mon utilisateur personnalise sa police avec l'option
> "extra large", le rendu est très mauvais et surtout l'utilisateur n'arrive
> pas à lire mon texte.
>
> Quelqu'un aurait-il une solution.
>
> Merci.

Tu peux récupérer la police de la barre de titre dans la clé
CaptionFont de la branche :

HKEY_CURRENT_USERControl PanelDesktopWindowMetrics

c'est une donnée de type REG_BINARY, l'offset du nom de la police semble
être 0x1c, et la chaine de caractère en Unicode.

Tu as également les clés :

HKEY_CURRENT_USERControl PanelAppearanceSchemes

et

HKEY_CURRENT_USERControl PanelAppearanceNew Schemes

liées à %Windir%system32ThemesUI.dll

Mais il y a peut être plus simple en regardant ici :

http://vb.mvps.org/samples/project.asp?id=ncmetrics

il y a des pistes par les API's. En regardant

http://vb.mvps.org/samples/code/NCMetrics.zip

qui permet de récupérer ce genre d'informations :


en utilisant entre autre SystemParametersInfo, et en ce qui me concerne,
je retombe bien sur mes pieds :

(CaptionHeight = 25) + (BorderWidth = 1) = 26 (cad pareil que
GetSystemMetrics(SM_CYCAPTION)

et

(CaptionHeight = 35) + (BorderWidth = 1) = 36

Peut être cette API fonctionnera t-elle chez toi

--
Cordialement,

Jacques.




Jacques93
Le #15400671
SAISAS a écrit :
Merci,

j'ai réussi à récupérer l'info avec SystemParametersInfo, mais je trouve
cela curieux ... même si cela marche.

Call SystemParametersInfo(SPI_GETICONTITLELOGFONT, Len(fontInfo),
fontInfo, 0)
Fsz = -3 - fontInfo.lfHeight




Je pense que cela est lié aux différences entre les notions de LOGFONT
et STDFONT. Un autre exemple ici :


Si tu modifie Form_Load, comme ceci, tu devrais obtenir la taille réelle
de la police :
Look XP : Trebuchet MS 9.75 arrrondi à 10)
Look W2K: Tahoma 8.25 arrondi à 8

Private Sub Form_Load()
Dim cNC As New FontInfo1
cNC.GetMetrics
Set lblSample(0).Font = cNC.Font(Me.hDC, captionfont)
lblSample(0).Caption = CInt(cNC.Font(Me.hDC, captionfont).Size)
[...]


--
Cordialement,

Jacques.
SAISAS
Le #15398811
Un grand merci,

et je pense que j'ai du travail pour choisir la bonne police ...

"Jacques93" a écrit :

SAISAS a écrit :
> Merci,
>
> j'ai réussi à récupérer l'info avec SystemParametersInfo, mais je trouve
> cela curieux ... même si cela marche.
>
> Call SystemParametersInfo(SPI_GETICONTITLELOGFONT, Len(fontInfo),
> fontInfo, 0)
> Fsz = -3 - fontInfo.lfHeight
>

Je pense que cela est lié aux différences entre les notions de LOGFONT
et STDFONT. Un autre exemple ici :


Si tu modifie Form_Load, comme ceci, tu devrais obtenir la taille réelle
de la police :
Look XP : Trebuchet MS 9.75 arrrondi à 10)
Look W2K: Tahoma 8.25 arrondi à 8

Private Sub Form_Load()
Dim cNC As New FontInfo1
cNC.GetMetrics
Set lblSample(0).Font = cNC.Font(Me.hDC, captionfont)
lblSample(0).Caption = CInt(cNC.Font(Me.hDC, captionfont).Size)
[...]


--
Cordialement,

Jacques.



Publicité
Poster une réponse
Anonyme