Page 1 sur 1

[R] _GUICtrlHeader_*, problème bizarre...

Posté : sam. 22 janv. 2011 03:24
par matwachich
Encore moi!
Un truc bizarre avec les GuiCtrlHeader!
Voici le code (c'est l'exemple de la doc pour la fonction _GUICtrlHeader_AddItem)

Code : Tout sélectionner

#include <GuiConstantsEx.au3>
#include <GuiHeader.au3>

Opt('MustDeclareVars', 1)

$Debug_HDR = False ; Check ClassName being passed to functions, set to True and use a handle to another control to see it work

_Main()

Func _Main()
    Local $hGUI, $hHeader

    ; Create GUI
    $hGUI = GUICreate("Header", 400, 300)
    $hHeader = _GUICtrlHeader_Create ($hGUI)
    GUISetState()

    ; Add columns
    _GUICtrlHeader_AddItem ($hHeader, "Column 1", 100)
    _GUICtrlHeader_AddItem ($hHeader, "Column 2", 100)
    _GUICtrlHeader_AddItem ($hHeader, "Column 3", 100)
    _GUICtrlHeader_AddItem ($hHeader, "Column 4", 100)

    ; Loop until user exits
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc   ;==>_Main
Le texte dans les boutons du header est en chinois! (sans rire! au sens propre!)
Alors j'aimerai bien comprendre...

MERCI

Re: [..] _GUICtrlHeader_*, problème bizarre...

Posté : sam. 22 janv. 2011 11:08
par jchd
Ajoute
_GUICtrlHeader_SetUnicodeFormat($hHeader, 1)
avant GuiSetState

Je pense que c'est le choix de la fonte par défaut (17 ???) qui déconne. Forcer Unicode aide un peu mais si c'est bien cela, il faut changer l'UDF standrad pour utiliser une fonte correcte (en fonction de la locale en vigueur).

Re: [..] _GUICtrlHeader_*, problème bizarre...

Posté : sam. 22 janv. 2011 11:24
par matwachich
En effet, c'est bien ça! MERCI

Re: [..] _GUICtrlHeader_*, problème bizarre...

Posté : sam. 22 janv. 2011 11:24
par Tlem
Grillé sur le poteau ... :lol:
Effectivement, en regardant l'include GuiHeader.au3, on s’aperçoit de l'utilisation de _GUICtrlHeader_GetUnicodeFormat dans la fonction qui nous intéresse. :roll:
Et de ceci dans l'entête de l'include :

Code : Tout sélectionner

Global Const $__HEADERCONSTANT_DEFAULT_GUI_FONT = 17

Re: [R] _GUICtrlHeader_*, problème bizarre...

Posté : sam. 22 janv. 2011 11:43
par matwachich
Bah au fait, moi, j'ai pas touché à $__HEADERCONSTANT_DEFAULT_GUI_FONT, mais j'ai modifier la dernière ligne de la fonction _GUICtrlHeader_Create:

Code : Tout sélectionner

; C'était:
_GUICtrlHeader_SetUnicodeFormat($hHeader, False)
; J'ai mis:
_GUICtrlHeader_SetUnicodeFormat($hHeader, True)
Et ça marche!

Re: [R] _GUICtrlHeader_*, problème bizarre...

Posté : sam. 22 janv. 2011 12:00
par Tlem
:shock:
Bin oui, c'est ce que jchd vous a indiqué !!!
Et c'est comme cela qu'il faut le faire.
Par contre jchd parlait de la variable $__HEADERCONSTANT_DEFAULT_GUI_FONT, mais je n'ai pas trouvé à quoi correspondait le 17.
C'était donc un appel à plus de renseignements à l'attention de jchd et non de vous. :P

Re: [R] _GUICtrlHeader_*, problème bizarre...

Posté : sam. 22 janv. 2011 13:06
par jchd
Objectivement aucune idée sur la numérotation des fontes par Windows. Je n'ai pas trop envie de labourer MSDN pendant des plombes pour ça. Il faut peut-être tenter de commenter cette ligne et voir ce que ça donne par défaut, car je vois mal comment un numéro fixe (17 ou autre) peut s'accorder avec une locale lithanienne, française ou thaï.

Ce bout de code date peut-être de W98, qui sait.

Re: [R] _GUICtrlHeader_*, problème bizarre...

Posté : sam. 22 janv. 2011 18:05
par Tlem
Je ne pense pas qu'il soit nécessaire de modifier $__HEADERCONSTANT_DEFAULT_GUI_FONT car si on utilise _GUICtrlHeader_SetUnicodeFormat($hHeader, True), cela fonctionne et on ne modifie pas la fonte ...

Par contre en fouillant un peu, dans la fonction _GUICtrlHeader_Create de l'include GuiHeader.au3, on peut lire juste avant le Return ceci :

Code : Tout sélectionner

_GUICtrlHeader_SetUnicodeFormat($hHeader, False)
:roll:

Il suffit donc de modifier le comportement par défaut et de changer le False par un True. 8)

Re: [R] _GUICtrlHeader_*, problème bizarre...

Posté : sam. 22 janv. 2011 19:33
par jchd
Certes mais forcer une fonte chinoise (17 ?) ne me semble pas idéal. Il doit y avoir un loup. Il y a une révision de l'aide et des exemples associés en cours et j'y ai soumis la chose. Un chirurgien s'en occupera certainement.

En attendant et pour éviter d'avoir à modifier un include standard, le choix était de changer ce flag avant affichage.

Re: [R] _GUICtrlHeader_*, problème bizarre...

Posté : dim. 23 janv. 2011 15:09
par Tlem
+1