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

Affichage de la barre de titre

3 réponses
Avatar
SAISAS
Bonjour,

j'ai un problème tout bête, un utilisateur qui y voit très mal. Il a
personnalisé son bureau avec la taille de police "extra large".

J'ai donc un problème avec la fonction Resize qui positionne trop loin les
derniers boutons en bas. J'ai aussi un problème avec la taille de police qui
est trop petite pour lui.

Quelqu'un saurait-il comment traiter le problème ?

Merci.

3 réponses

Avatar
Jacques93
Bonjour SAISAS,
SAISAS a écrit :
Bonjour,

j'ai un problème tout bête, un utilisateur qui y voit très mal. Il a
personnalisé son bureau avec la taille de police "extra large".

J'ai donc un problème avec la fonction Resize qui positionne trop loin les
derniers boutons en bas. J'ai aussi un problème avec la taille de police qui
est trop petite pour lui.

Quelqu'un saurait-il comment traiter le problème ?




Tu peux déterminer la hauteur de la barre de titre (et d'autres éléments
: barre de menu, par exemple) avec l'API GetSystemMetrics :

Private Const SM_CYCAPTION = 4
Private Const SM_CYMENU = 15
Private Declare Function GetSystemMetrics Lib "user32" _
(ByVal nIndex As Long) As Long

Private Sub GetSizeInfos()
Dim FormCaptionHeight As Long
Dim MenuBarHeight As Long

FormCaptionHeight = GetSystemMetrics(SM_CYCAPTION)
MsgBox FormCaptionHeight
MenuBarHeight = GetSystemMetrics(SM_CYMENU)
MsgBox MenuBarHeight
End Sub

Plus de détail ici :

<http://msdn2.microsoft.com/en-us/library/ms724385.aspx>

et

http://support.microsoft.com/kb/210603

Tu pourras ainsi ajuster la manière dont tu positionnes les contrôles.
(Le problème, bien que moins flagrant est identique avec l'affichage
classique, et le look XP, où la barre de titre passe de 19 à 26 pixels)

En dehors de VB, et valable pour toutes les applications, il y a aussi
la loupe (normalement dans Accessoires => Accessibilité) :

%SystemRoot%system32magnify.exe

--
Cordialement,

Jacques.
Avatar
SAISAS
Merci pour ton aide ...

mais cette fonction ne donne pas le résultat attendu (en fait, elle semble
retourner toujours 19). Pourtant, toutes mes recherches ont abouti à cette
même fonction. Je m'interroge donc sur le pourquoi cela ne marche pas chez
moi ...

J'ai trouvé du code pour récupérer la valeur (la fonction retourne la valeur
de Me.Heght qu'il faut utiliser pour toujours positionner correctement le
bouton, donc je remplace Me.Height par UsableHeight(Me) dans mon code (pour
ne pas tout réecrire).

Public Function UsableHeight(ByVal Feuille As Form) As Long
Dim Titre As TITLEBARINFO
Dim window As RECT
Dim Rc As Long

Rc = GetWindowRect(Feuille.hwnd, window)
Titre.cbSize = Len(Titre)
Rc = GetTitleBarInfo(Feuille.hwnd, Titre)
UsableHeight = Feuille.Height - (Titre.rcTitleBar.Bottom -
Titre.rcTitleBar.Top - 19) * (Feuille.Height / (window.Bottom - window.Top))

End Function

Et ça marche chez moi. ...


"Jacques93" a écrit :

Bonjour SAISAS,
SAISAS a écrit :
> Bonjour,
>
> j'ai un problème tout bête, un utilisateur qui y voit très mal. Il a
> personnalisé son bureau avec la taille de police "extra large".
>
> J'ai donc un problème avec la fonction Resize qui positionne trop loin les
> derniers boutons en bas. J'ai aussi un problème avec la taille de police qui
> est trop petite pour lui.
>
> Quelqu'un saurait-il comment traiter le problème ?
>

Tu peux déterminer la hauteur de la barre de titre (et d'autres éléments
: barre de menu, par exemple) avec l'API GetSystemMetrics :

Private Const SM_CYCAPTION = 4
Private Const SM_CYMENU = 15
Private Declare Function GetSystemMetrics Lib "user32" _
(ByVal nIndex As Long) As Long

Private Sub GetSizeInfos()
Dim FormCaptionHeight As Long
Dim MenuBarHeight As Long

FormCaptionHeight = GetSystemMetrics(SM_CYCAPTION)
MsgBox FormCaptionHeight
MenuBarHeight = GetSystemMetrics(SM_CYMENU)
MsgBox MenuBarHeight
End Sub

Plus de détail ici :

<http://msdn2.microsoft.com/en-us/library/ms724385.aspx>

et

http://support.microsoft.com/kb/210603

Tu pourras ainsi ajuster la manière dont tu positionnes les contrôles.
(Le problème, bien que moins flagrant est identique avec l'affichage
classique, et le look XP, où la barre de titre passe de 19 à 26 pixels)

En dehors de VB, et valable pour toutes les applications, il y a aussi
la loupe (normalement dans Accessoires => Accessibilité) :

%SystemRoot%system32magnify.exe

--
Cordialement,

Jacques.



Avatar
Jacques93
SAISAS a écrit :
Merci pour ton aide ...

mais cette fonction ne donne pas le résultat attendu (en fait, elle semble
retourner toujours 19). Pourtant, toutes mes recherches ont abouti à cette
même fonction. Je m'interroge donc sur le pourquoi cela ne marche pas chez
moi ...




Biarre effectivement, cela fonctionne bien chez moi,
(W2K, XP SP2, Vista)

Titre Menu
W2K/Classique 19 19
W2K/Classique XL 26 22

XP 26 20
XP XL 36 22

Vista 96 ppp 20 20
Vista 120 ppp 25 25


A tout hasard, tester Err.LastDllError, mais s'il y avait une erreur,
GetSystemMetrics devrait renvoyer zéro.

--
Cordialement,

Jacques.