J'ai trouvé une belle fonction pour adapter la laille d'un Label à la longueur de son contenu, à l'adresse https://www.autoitscript.com/forum/topi ... -fit-text/
Mais cette manière de faire perturbe le résultat de la fonction GUICtrlSetTip . Les bulles au survol de la souris ne correspondent plus aux Labels.
Mon code fait le travail suivant :
1. Lecture d'une phrase en langue étrangère dans un fichier texte.
2. Découpage de la phrase en mots, affichage de chaque mot dans un label
3. Appel à la fonction _Control_SetWidth2Text pour que la lecture de la phrase reconstituée par la suite de labels soit plus agréable à l'oeil. Cela uniformise les espaces entre les mots.
4. Lecture de la phrase traduite en français.
5. Découpage de la phrase française en mots, affichage de chaque mot dans une bulle (fonction GUICtrlSetTip)
Code : Tout sélectionner
For $i = 1 To UBound($Tablo_Grec) - 1
GUICtrlCreateLabel($Tablo_Grec[$i], $MargeH, $MargeV, 300, 30) ;,"",$WS_EX_TRANSPARENT )
GUICtrlSetFont(-1, 15, 400, 0, "Courier") ; police à chasse fixe pour la présentation
_Control_SetWidth2Text($hGUI, "", -1)
GUICtrlSetTip( -1, $Tablo_Francais[$i] ) ; bulle d'aide
$MargeH = $MargeH + (StringLen($Tablo_Grec[$i]) * 11) ; calcul de la position du prochain Label (code pas au point !)
Next
Func _Control_SetWidth2Text($hWin, $sWinText, $hCtrl, $iPad = 0);author: ResNullius, based on PaulIA/GaryFrost (listview udf)
Local $hWnd, $hDC, $hFont, $iMax, $tSize, $sText, $aCtrlPos, $ctrlX, $ctrlY, $ctrlW, $ctrlH
If Not IsHWnd($hCtrl) Then
$hWnd = ControlGetHandle($hWin, $sWinText, $hCtrl)
Else
$hWnd = $hCtrl
EndIf
If IsHWnd($hWnd) Then
$hFont = _SendMessage($hWnd, $WM_GETFONT)
$hDC = _WinAPI_GetDC($hWnd)
_WinAPI_SelectObject($hDC, $hFont)
$sText = ControlGetText($hWin, $sWinText, $hCtrl)
$tSize = _WinAPI_GetTextExtentPoint32($hDC, $sText & " ")
If DllStructGetData($tSize, "X") > $iMax Then
$iMax = DllStructGetData($tSize, "X") + $iPad
$aCtrlPos = ControlGetPos($hWin, $sWinText, $hCtrl)
$ctrlX = $aCtrlPos[0]
$ctrlY = $aCtrlPos[1]
$ctrlW = $aCtrlPos[2]
$ctrlH = $aCtrlPos[3]
ControlMove($hWin, $sWinText, $hCtrl, $ctrlX, $ctrlY, $iMax, $ctrlH)
EndIf
_WinAPI_SelectObject($hDC, $hFont)
_WinAPI_ReleaseDC($hWnd, $hDC)
EndIf
EndFunc;==>_Control_SetWidth2Text
Je vous remercie de vos avis et conseils.


