Page 1 sur 1

Modifier l'apparence d'une Msgbox

Posté : mar. 10 janv. 2023 09:36
par Accessvision
Bonjour à tous,
Aujourd'hui j'aurai besoin encore de votre aide.
Je fais des scripts en autoit lpour des solutions ppour personne non voyante.
Souvent, je dois utiliser des Msgbox pour annoncer des messages, mais avec l'affichage par défaut, le texte contenu dans la fenêtre ne peut pas être lu par nos synthèses vocales.
Comme je ne m'y connais pas à fond dans la programmation, en me renseignant on m'a dit que le problème venait peut-être d'Autoit car des langages de programmations qui utilisent le système de msbbox natif de windows ne pposait pas ce problème.
Je cherche donc à savoir si autoit permet d'utiliser ce système pour fairre des fenêtrres?
J'ai vu les UDF winapi dans le dossier include mais je n'ai pas trouvé dans ces fichiers des descriptifs des fonctionnalités et ce qu'elles font.
Pourriez-vous m'aider et me dire si cela est possible?
Merci d'avance pour votre aide!!!

Re: Modifier l'apparence d'une Msgbox

Posté : mar. 10 janv. 2023 15:03
par walkson
Bonjour
Une Msgbox est une boite de dialogue Windows de class #32770, donc le problème ne vient pas d'Autoit
Il ne faut pas oublier que Msgbox est bloquant et en fonction de votre code, celui-ci est en attente
Regardez et modifiez le flag (première valeur) en $MB_SYSTEMMODAL ou $MB_TASKMODAL ou autres à tout hasard (voir l'aide)
Je vous mets un petit code qui utilise différentes boites à message faciles à utiliser

Code : Tout sélectionner

Form()
Sleep(1000)
ToolTip("message tooltip",150,300,"titre")
Sleep(1000)
SplashTextOn("Title", "Le message SplashText.", -1, 200, -1, 100, 4, "", 24)
Sleep(1000)
MsgBox(4096,"titre","message msgbox")

Func Form()
Global $Form1 = GUICreate("Titre", 235, 101, 214, 689)
Global $Label1 = GUICtrlCreateLabel("Message label", 16, 16, 200, 50)
GUISetState(@SW_SHOW)
EndFunc
La fermeture de Msgbox entraîne la fermeture de toutes les fenêtres

Re: Modifier l'apparence d'une Msgbox

Posté : mar. 10 janv. 2023 15:22
par Accessvision
Rebonjour,
Bon, alors il faudra que j'explore de plus prêt ce problème car le flag systemmodal et taskmodal créent le même problème.
Le code SplashTextOn lit le message, il me faudrait la même chose mais où les utilisateurs puissent cliquer sur oui/non et qui ne disparaît pas.
Ou alors, y a-t-il un flag qui crée un champ en lecture seul avec un bouton oui et non où je peux metre mon message?
Merci

Re: Modifier l'apparence d'une Msgbox  

Posté : mar. 10 janv. 2023 17:15
par walkson
A ma connaissance, on ne peut pas mettre des boutons sur SplashTextOn
La solution la plus simple serait celle-là

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
Opt("GUIOnEventMode", 1)
Global $Form2
Global $Form1 = GUICreate("Form1", 615, 438, 192, 124)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
Global $Button1 = GUICtrlCreateButton("Message", 224, 344, 105, 41)
GUICtrlSetOnEvent(-1, "Button1Click")
GUISetState(@SW_SHOW)


While 1
 Sleep(100)
WEnd

Func Button1Click()
_Main()
EndFunc
Func Form1Close()
Exit
EndFunc



Func _Main()
	Local $idYes, $idNo

	$Form2 = GUICreate("Custom MsgBox", 210, 80)

	GUICtrlCreateLabel("MESSAGE" & @CRLF & "Please click a button!", 10, 10)
	$idYes = GUICtrlCreateButton("Yes", 10, 50, 50, 20)
	GUICtrlSetOnEvent($idYes, "OnYes")
	$idNo = GUICtrlCreateButton("No", 80, 50, 50, 20)
	GUICtrlSetOnEvent($idNo, "OnNo")

	GUISetOnEvent($GUI_EVENT_CLOSE, "OnExit")

	GUISetState() ; display the GUI
EndFunc   ;==>_Main

; --------------- Functions ---------------
Func OnYes()
	MsgBox($MB_SYSTEMMODAL, "You clicked on", "Yes")
	OnExit()
EndFunc   ;==>OnYes

Func OnNo()
	MsgBox($MB_SYSTEMMODAL, "You clicked on", "No")
	OnExit()
EndFunc   ;==>OnNo

Func OnExit()
	GUIDelete($Form2)
EndFunc   ;==>OnExit
après il y a _WinAPI_MessageBoxIndirect($tMBP) mais c'est toujours class #32770 donc :?:

Re: Modifier l'apparence d'une Msgbox

Posté : mer. 11 janv. 2023 08:04
par Accessvision
Bonjour,
Les codes proposés provoquent le même pproblème j'ai j'ai trouvé une solution alternative.
Tout d'abord j'ai fait un SplashTextOn qui annonce le texte, puis après j'ai fait une Msgbox où je mets mes boutons. Ça permet d'être au courant du message et de pouvoir cliqué sur les boutons après.
Merci pour votre aide qui m'a permis de découvrir la fonction SplashTextOn.
Cordialement