Menu et lettres soulignées (&)

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
majikeyric
Messages : 602
Inscription : dim. 08/déc./2013 23:19
Contact :

Menu et lettres soulignées (&)

Message par majikeyric »

Yop :)

J'ai essayé de créer un menu avec des lettres soulignées en mettant un '&' avant la bonne lettre.
Mais elles ne s'affichent pas à l'exécution, je suis sous Windows 7 et pas sous XP (j'ai vu qu'il y avait une option à décocher pour celui-ci).

J'ai pourtant d'autres applis (genre ultraedit) qui affichent bien un menu avec des lettres soulignées...

Y a que les applis PB qui ne les affichent pas... comme l'IDE aussi.

J'ai rien trouvé sur le fofo qui m'expliquerait d'où cela vient.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Menu et lettres soulignées (&)

Message par falsam »

C'est la faute de Microsoft :mrgreen:

Le réglage est à faire avec le panneau de configuration de Windows7.
1 - Panneau de configuration
2 - Lien options d'ergonomie.
3 - de nouveau le lien Options d'ergonomie sur la page qui vient de s'afficher.
4 - Rendre le clavier plus facile à utiliser.
5 - Cocher la case Souligner les raccourcis clavier et les touches d’accès rapides.

Simple non ? :p
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Menu et lettres soulignées (&)

Message par Marc56 »

majikeyric a écrit :Yop :)

J'ai essayé de créer un menu avec des lettres soulignées en mettant un '&' avant la bonne lettre.
Mais elles ne s'affichent pas à l'exécution, je suis sous Windows 7 et pas sous XP (j'ai vu qu'il y avait une option à décocher pour celui-ci).

J'ai pourtant d'autres applis (genre ultraedit) qui affichent bien un menu avec des lettres soulignées...

Y a que les applis PB qui ne les affichent pas... comme l'IDE aussi.

J'ai rien trouvé sur le fofo qui m'expliquerait d'où cela vient.
Depuis Windows XP (ou 2000?), en configuration "d'usine" (c'est à dire Windows installé mais non modifié) les raccourcis clavier ne s'affichent que si on appuie au moins une fois sur l'une ou l'autre des touches ALT.

On peut changer ce comportement par défaut dans le panneau de configuration comme l'a indiqué Falsam

:wink:
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Menu et lettres soulignées (&)

Message par Mesa »

Il existe une solution sous Windows :

Code : Tout sélectionner

Global pvParam.i
;Si problème, remplacer pvParam.i par pvParam.l

; On interroge le système
If SystemParametersInfo_(#SPI_GETKEYBOARDCUES, 0, @pvParam, 0)

; Si Menu non souligné par défaut
If pvParam = 0 
  SystemParametersInfo_(#SPI_SETKEYBOARDCUES, 0, #True, 0) ; alors on force le soulignement
EndIf

If OpenWindow(0, 200, 200, 200, 100, "Exemple MenuItem")
  If CreateMenu(0, WindowID(0))
    MenuTitle("&Projet")
    MenuItem(1, "Ouvrir")                   ; Elément normal
    MenuItem(2, "&Enregistrer")             ; Elément avec une lettre soulignée.
    MenuBar()                               
    MenuItem(3, "&Quitter"+Chr(9)+"ECHAP")  ; Elément avec un raccourci clavier affiché sur la droite.
  EndIf
  Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf

;Debug pvParam
If pvParam = 0 ; Si Menu était non souligné par défaut, on rétablit le système
  SystemParametersInfo_(#SPI_SETKEYBOARDCUES, 0, #False, 0)
EndIf

Else
  MessageRequester("Attention", "Problème avec la fonction SystemParametersInfo")
EndIf

End


;=========== API WINDOWS ============
; http://msdn.microsoft.com/en-us/library/windows/desktop/ms724947%28v=vs.85%29.aspx  
;  BOOL WINAPI SystemParametersInfo(
;   _In_     UINT uiAction,
;   _In_     UINT uiParam,
;   _Inout_  PVOID pvParam,
;   _In_     UINT fWinIni
;   )

;

; SPI_GETKEYBOARDCUES = $100A
; Determines whether menu access keys are always underlined. 
; The pvParam parameter must point To a BOOL variable that receives TRUE 
; If menu access keys are always underlined, And FALSE If they are 
; underlined only when the menu is activated by the keyboard.


; SPI_SETKEYBOARDCUES = 0x100B
; Sets the underlining of menu access key letters. 
; The pvParam parameter is a BOOL variable. 
; Set pvParam To TRUE To always underline menu access keys, 
; Or FALSE To underline menu access keys only when the menu is activated 
; from the keyboard.
; SPI_SETMENUUNDERLINES = 0x100B
; Same As SPI_SETKEYBOARDCUES.
La fonction SystemParametersInfo_ permet de changer plein de réglages du système comme la vitesse de la souris, le contraste de l'écran (sous condition), etc.

M.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Menu et lettres soulignées (&)

Message par falsam »

Code archivé. Merci Mesa pour ce partage. :)

J'ai modifié la fin du code afin de rétablir la configuration utilisateur du menu quand on quitte l'application.

Code : Tout sélectionner

Else
  spiflagerror = #True
  MessageRequester("Attention", "Problème avec la fonction SystemParametersInfo")
EndIf

If spiflagerror = #False And pvParam = 0
  SystemParametersInfo_(#SPI_SETKEYBOARDCUES, 0, #False, 0)
EndIf

End
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
majikeyric
Messages : 602
Inscription : dim. 08/déc./2013 23:19
Contact :

Re: Menu et lettres soulignées (&)

Message par majikeyric »

Merci pour vos réponses :)

micro$oft aurait pu le mettre par défaut ?!!

cool l'astuce par programmation de Mesa !

@falsam, je n'ai pas compris ta modif, le code de Mesa rétablit bien la valeur d'avant lancement du prog ?
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Menu et lettres soulignées (&)

Message par falsam »

majikeyric a écrit :@falsam, je n'ai pas compris ta modif, le code de Mesa rétablit bien la valeur d'avant lancement du prog ?
En principe non.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
majikeyric
Messages : 602
Inscription : dim. 08/déc./2013 23:19
Contact :

Re: Menu et lettres soulignées (&)

Message par majikeyric »

Code : Tout sélectionner

;Debug pvParam
If pvParam = 0 ; Si Menu était non souligné par défaut, on rétablit le système
  SystemParametersInfo_(#SPI_SETKEYBOARDCUES, 0, #False, 0)
EndIf
Répondre