Ce sujet a déjà été discuté dans le forum mais je ne m'en sors pas.
J'ai créé ce petit programme pour qu'il fonctionne en résolution 800x600
Quand je passe mon PC en 1024x768, tout me semble correct
Quand je monte en 1280x800, plus rien ne s'affiche
Où est le bug ?
Mon logiciel basé sur StringSize
► Afficher le texte
Code : Tout sélectionner
; StringSize example ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#include <GUIConstantsEx.au3>
#include <StringSize.au3>
#include <Array.au3>
Global $aColour[4] = [0xFFFF88, 0xBBFF88, 0xBB88FF, 0xFF88FF]
Global $CoefW, $CoefH, $Width = 800, $Height = 600
Global $sLabelMsg = "Que peut on faire avec GDTarot ?" & @CRLF & _
"Ce logiciel va vous permettre de générer des donnes soit de façon automatique soit de façon manuelle," & _
" ces donnes pourront être stockées afin de les rejouer ultérieurement ou détruites et ces jeux générés pourront être imprimés." & _
"Ces parties créées pourront être utilisées pour faire de la FORMATION." & @CRLF & @CRLF & _
"ONGLET ""Initialisations Diverses"" " & @CRLF & _
"Cet onglet va permettre de donner des valeurs aux cartes. Des valeurs par défaut ont été positionnées mais elles peuvent être" & _
" modifiées et sauvegardées selon vos désidérata. Vous avez aussi le choix de générer différents ""types de Jeu"" (Faible, Moyen ou Fort)" & _
" et pour chaque type vous pouvez mettre des valeurs limites." & @CRLF & _
"Exemple : Vous pouvez selon le type de jeu décider que le Preneur doit avoir au minimum 7, 8 ou 9 Atouts dans son Jeu. Dans ce cas, le " & @CRLF & _
"logiciel générera ce qui a été demandé (Attention de ne pas tomber dans des aberrations comme par exemple décider que le jeu du Preneur " & @CRLF & _
"doit posséder 3 cartes de chaque couleur et avoir au minimum plus de 6 Atouts !)" & @CRLF & @CRLF & _
"ONGLET ""Générateur de Donnes Auto"" " & @CRLF & _
"Vous pouvez générer autant de donnes de chaque type que vous le désirez. Ensuite vous pouvez demander à visualiser ou pas chaque donne." & _
"Si vous visualisez, vous verrez apparaître pour chaque donne le jeu des 4 joueurs et si ce jeu vous sied soit vous l'enregistrez soit " & _
"vous passez au jeu suivant." & @CRLF & @CRLF & _
"ONGLET ""Générateur de Donnes Manuel"" " & @CRLF & _
"Lorsque vous composez un jeu vous même, le logiciel ne tient pas compte des valeurs positionnées dans l'onglet ""Initialisations diverses""." & _
" Des informations seront données au fur et à mesure de la composition des jeux. Le premier jeu à constituer est celui du Preneur." & _
" Pour ce faire, cliquez sur une carte pour la sélectionner ou re cliquez sur la même pour la désélectionner. Quand le jeu du Preneur est fait," & _
"vous aurez le choix soit de constituer le chien soit de le faire faire par le logiciel de façon aléatoire. Il en sera de même pour la" & _
"constitution des jeux suivants (devant et derrière le Preneur). Lorsque les 4 jeux seront faits, vous pourrez sauvegarder ou annuler ce jeu." & @CRLF & _
"ATTENTION : le fait de passer sur cet onglet impose de cliquer sur le bouton ROUGE avant de changer d'onglet. " & @CRLF & @CRLF & _
"ONGLET ""Manipulation sur les DONNES"" " & @CRLF & _
"Cliquez sur ""Actualisez les Données"" va permettre de décrypter et de charger le fichier de toutes les donnes qui ont été générées " & _
"de façon automatique ou manuelle. Ensuite vous sélectionnez les donnes soit individuellement soit celles générées à une date donnée. " & _
"2 possibilités : Générer un fichier type Excel pour impression de la ou des donnes sélectionnées ou les supprimer du fichier car non " & _
"intéressante à jouer." & @CRLF & @CRLF & _
"ONGLET ""Formation"" " & @CRLF & _
"Après avoir sélectionné une donne, apprenez à vos amis à jouer leur PREMIERE carte en fonction de leur position et des cartes du chien." & _
"Vous pourrez faire apparaître le jeu de chaque défenseur et jouer une donne, rejouer la même donne, revenir en arrière pendant une partie," & _
"voir les scores..." & @CRLF & @CRLF & _
"Sur tous les onglets, le bouton ""QUITTER"" vous fera quitter le logiciel." & @CRLF & _
"GDTarot fonctionne sur tout OS Microsoft ( d'XP à Windows 10) " & @CRLF & _
"Autre produit sur le TAROT : GTTarot (Gestionnaire de Tournois de Tarot en Donnes Libres avec challenge annuel et pcn)"
AdlibRegister("_ScreenAdaptation")
$CoefW = @DesktopWidth / $Width
$CoefH = @DesktopHeight / $Height
$font = "Comic Sans MS"
$GDTarot0 = GUICreate("G D T A R O T --Informations--", (@DesktopWidth * $CoefW) - 10, (@DesktopHeight * $CoefH) - 50)
GUISetIcon(@SystemDir & "\cmmon32.exe", 0)
$hLabel = GUICtrlCreateLabel("", 10, 10, -1, -1, 1)
$Quitter = GUICtrlCreateButton("&Quitter", Int((@DesktopWidth * $CoefW) * 95 / 100) - 50, Int((@DesktopHeight * $CoefH) * 92 / 100) - 40, Int(75 * $CoefW), 30 * $CoefH)
GUICtrlSetFont(-1, 10, 650, 0, $font)
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlSetBkColor(-1, 0xFFC0C0)
$Page = GUICtrlCreateTab(5, 5, @DesktopWidth, @DesktopHeight)
GUICtrlSetFont(-1, 8 * $CoefW, 400, 0, $font)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
$Page0 = GUICtrlCreateTabItem("Informations Produit")
$Page1 = GUICtrlCreateTabItem("Initialisations Diverses")
$Page2 = GUICtrlCreateTabItem("Générateur Donnes en Auto")
$Page3 = GUICtrlCreateTabItem("Générateur Donnes Manuel")
$Page4 = GUICtrlCreateTabItem("Manipulation des Donnes")
$Page5 = GUICtrlCreateTabItem("Formation")
$Page6 = GUICtrlCreateTabItem("S A M U")
$Page7 = GUICtrlCreateTabItem("Aide")
GUISetState(@SW_HIDE)
While 1
$iColour = $aColour[Random(0, 3, 1)]
; $aMsgReturn = _StringSize($sLabelMsg, $iSize, $iWeight, $iAttrib, $Font, $iMaxWidth)
$aMsgReturn = _StringSize($sLabelMsg, Int(7 * $CoefW), 400, 0, "Comic Sans MS", @DesktopWidth - 20)
$iError = @error
; _ArrayDisplay($aMsgReturn) ; texte,13,780,459 Hauteur ligne, largeur rectangle, hauteur rect
; MsgBox(0,"",$aMsgReturn[2] & "__" & $aMsgReturn[3] & "__" & (@DesktopWidth - ($aMsgReturn[2] + 25)) / 2 & "--" & (@DesktopHeight - ($aMsgReturn[3] + 85)) / 2 & "---" & $aMsgReturn[2] + 25 & "----" & $aMsgReturn[3] + 85 & " coefw=" & $CoefW & " coefh=" & $CoefH)
If IsArray($aMsgReturn) = 1 Then
WinMove("", "G D T A R O T --Informations--", (@DesktopWidth - ($aMsgReturn[2] + 25)) / 2, (@DesktopHeight - ($aMsgReturn[3] + 85)) / 2, $aMsgReturn[2] + 25, $aMsgReturn[3] + 85)
GUISetState(@SW_SHOW, $GDTarot0)
ControlMove("G D T A R O T --Informations--", "", $hLabel, Int(5 * $CoefW), Int(25 * $CoefH), $aMsgReturn[2], $aMsgReturn[3])
GUICtrlSetData($hLabel, $aMsgReturn[0])
GUICtrlSetFont($hLabel, Int(7 * $CoefW), (400), 0, "Comic Sans MS")
GUICtrlSetBkColor($hLabel, $iColour)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Else
MsgBox(0, "Error", "Code = " & $iError)
EndIf
WEnd
Exit
; End of example ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Func _ScreenAdaptation()
$WorkAera = _GetWorkArea() ;Etait Local $WorkAera = _GetWorkArea() et non Global
Local $aGuiPos = WinGetPos($GDTarot0)
If $aGuiPos[0] <> $WorkAera[0] Or $aGuiPos[1] <> $WorkAera[1] Or $aGuiPos[2] <> $WorkAera[4] Or $aGuiPos[3] <> $WorkAera[5] Then WinMove($GDTarot0, "", $WorkAera[0], $WorkAera[1], $WorkAera[4], $WorkAera[5])
Return $WorkAera
EndFunc ;==>_ScreenAdaptation
Func _GetWorkArea()
Global $Area[6]
Local $StartRect = DllStructCreate("int[4]")
Local $PStartRect = DllStructGetPtr($StartRect)
DllCall("user32.dll", "int", "SystemParametersInfo", "int", 48, "int", 0, "ptr", $PStartRect, "int", 0)
$Area[0] = DllStructGetData($StartRect, 1, 1)
$Area[1] = DllStructGetData($StartRect, 1, 2)
$Area[2] = DllStructGetData($StartRect, 1, 3)
$Area[3] = DllStructGetData($StartRect, 1, 4)
$Area[4] = $Area[2] - $Area[0]
$Area[5] = $Area[3] - $Area[1]
Return $Area
EndFunc ;==>_GetWorkArea