Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Police de caractères de la barre de titre

4 réponses
Avatar
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.

4 réponses

Avatar
Jacques93
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 :

<http://cjoint.com/?gpqsOFQU0F>

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.
Avatar
SAISAS
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 :

<http://cjoint.com/?gpqsOFQU0F>

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.




Avatar
Jacques93
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 :

<http://www.vbaccelerator.com/home/VB/Tips/Get_System_Display_Fonts_and_Non-Client_Area_Sizes/article.asp>

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.
Avatar
SAISAS
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 :

<http://www.vbaccelerator.com/home/VB/Tips/Get_System_Display_Fonts_and_Non-Client_Area_Sizes/article.asp>

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.