Afficher du texte à l'écran en permanence.

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Thinky08
Niveau 1
Niveau 1
Messages : 2
Enregistré le : ven. 30 oct. 2020 19:03
Status : Hors ligne

Afficher du texte à l'écran en permanence.

#1

Message par Thinky08 »

Bonjour,
Je commence tout juste à utiliser AutoIt et j'essaye, pour m'entraîner, d'afficher un texte simple (Plain text) à l'écran en permanence
(j'aimerais de préférence pouvoir changer la size et la position du texte).

Merci d'avance :D
"L'enfer est vide, tous les démons sont ici."
- W. Shakespeare
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Afficher du texte à l'écran en permanence.

#2

Message par walkson »

Bonjour,
Pas très précis comme demande !
Texte à l'écran, sur une Gui, autres ?
Je vous propose du texte sur une Gui en trois solutions: sur un édit simple, sur un RichEdit et sur un label (static) en verticale.
Pour un texte à l'écran (sans support), on peut le faire en GDIplus mais pour débuter, mieux vaut attendre un peu :mrgreen: (et c'est pas terrible !)

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiRichEdit.au3>
#include <WinAPI.au3>
#include <StaticConstants.au3>
$text = " Qui a dit? «Si Dieu existe, j’espère qu’il a une bonne excuse.»  Réponse: Woody Allen (1935)." & @CRLF
$text &= "«On n’a jamais vu un aveugle dans un camp de nudistes.» Woody Allen (1935)." & @CRLF
$text &= " Qui a dit? «La durée d’un film devrait être directement liée à la capacité de la vessie humaine»  Réponse: Alfred Hitchcock (1899-1980)" & @CRLF
$text &= "«Le succès est un mauvais professeur. Il pousse les gens intelligents à se croire infaillibles» Bill Gates" & @CRLF
$text &= "Avez-vous remarqué comme on est bête, quand on est nombreux. George Sand" & @CRLF
$text &= " Qui a dit? «Quand les dieux veulent nous punir, ils exaucent nos prières.» réponse: Oscar Wilde (1854-1900)." & @CRLF
$text &= " Faites des bêtises, mais faites-les avec enthousiasme. Colette" & @CRLF
$text &= " Qui a dit? «Sous le capitalisme, les gens ont davantage de voitures. Sous le communisme, ils ont davantage de parkings.»  Réponse: Winston Churchill (1874-1965)" & @CRLF
$text &= " Qui a dit? «Le patriotisme, c’est aimer son pays. Le nationalisme, c’est détester celui des autres.»  Réponse: Charles de Gaulle (1890-1970)" & @CRLF
$text &= " «Les religions sont peu prolixes sur cette question que j’adore: que faisait Dieu avant la création?»  Roland Topor (1938-1997)" & @CRLF
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("", 615, 620)
Global $Edit1 = GUICtrlCreateEdit("", 120, 24, 257, 281, BitOR($ES_WANTRETURN,$WS_VSCROLL,$ES_MULTILINE))
GUICtrlSetData(-1, $text)
GUICtrlSetFont(-1,10,0,2,"Comic Sans MS")
$hRichEdit = _GUICtrlRichEdit_Create($Form1,$text,5,350,605,250,BitOR($ES_WANTRETURN,$WS_VSCROLL,$ES_MULTILINE))
                    _GUICtrlRichEdit_SetSel($hRichEdit, 1, 250)
                    _GUICtrlRichEdit_SetCharColor($hRichEdit,0xFF0000)
					_GUICtrlRichEdit_SetFont($hRichEdit,15,"Calibri")
Global $Button1 = GUICtrlCreateButton("voir SplashText", 456, 24, 129, 57)
Global $Button2 = GUICtrlCreateButton("cacher SplashText", 456, 93, 129, 57)
$Label1 = GUICtrlCreateLabel("",420,10)
LabelVertical($Label1, "Mon texte est ici ou là", 0x0000FF,Default)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
	 Case $GUI_EVENT_CLOSE
		 _GUICtrlRichEdit_Destroy($hRichEdit)
		Exit
	 Case $Button1
		 SplashTextOn("Title", $text, -1, -1, -1, -1, 4, "", 10)
	 Case $Button2
		 SplashOff()
 EndSwitch
WEnd
;ID du label, texte, couleur font, couleur arrière plan
Func LabelVertical($Hlabel, $text, $colorFont = Default, $colorBK = Default)
If $text = "" Then Return SetError(1)
$split = StringSplit($text,"")
Local $textN
For $i = 1 To $split[0]
	$textN &= $split[$i] & @CRLF
Next
GUICtrlSetStyle($Hlabel, $SS_CENTER)
GUICtrlSetData($Hlabel, $textN)
If  $colorFont <> Default Then GUICtrlSetColor($Hlabel, $colorFont)
If $colorBK <> Default Then GUICtrlSetBkColor($Hlabel, $colorBK)
$Label2 = GUICtrlCreateLabel($textN, -100, -100)
$hLabel_Handle = GUICtrlGetHandle($Label2)
$W =  _WinAPI_GetClientWidth ( $hLabel_Handle )
$H =  _WinAPI_GetClientHeight ( $hLabel_Handle )
GUICtrlDelete($Label2)
GUICtrlSetPos($Hlabel,Default,Default,$W, $H )
ConsoleWrite($W &">"& $H & @CRLF)
EndFunc
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
Thinky08
Niveau 1
Niveau 1
Messages : 2
Enregistré le : ven. 30 oct. 2020 19:03
Status : Hors ligne

Re: Afficher du texte à l'écran en permanence.

#3

Message par Thinky08 »

walkson a écrit : ven. 30 oct. 2020 22:27 Bonjour,
Pas très précis comme demande !
Texte à l'écran, sur une Gui, autres ?
Je vous propose du texte sur une Gui en trois solutions: sur un édit simple, sur un RichEdit et sur un label (static) en verticale.
Pour un texte à l'écran (sans support), on peut le faire en GDIplus mais pour débuter, mieux vaut attendre un peu :mrgreen: (et c'est pas terrible !)

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiRichEdit.au3>
#include <WinAPI.au3>
#include <StaticConstants.au3>
$text = " Qui a dit? «Si Dieu existe, j’espère qu’il a une bonne excuse.»  Réponse: Woody Allen (1935)." & @CRLF
$text &= "«On n’a jamais vu un aveugle dans un camp de nudistes.» Woody Allen (1935)." & @CRLF
$text &= " Qui a dit? «La durée d’un film devrait être directement liée à la capacité de la vessie humaine»  Réponse: Alfred Hitchcock (1899-1980)" & @CRLF
$text &= "«Le succès est un mauvais professeur. Il pousse les gens intelligents à se croire infaillibles» Bill Gates" & @CRLF
$text &= "Avez-vous remarqué comme on est bête, quand on est nombreux. George Sand" & @CRLF
$text &= " Qui a dit? «Quand les dieux veulent nous punir, ils exaucent nos prières.» réponse: Oscar Wilde (1854-1900)." & @CRLF
$text &= " Faites des bêtises, mais faites-les avec enthousiasme. Colette" & @CRLF
$text &= " Qui a dit? «Sous le capitalisme, les gens ont davantage de voitures. Sous le communisme, ils ont davantage de parkings.»  Réponse: Winston Churchill (1874-1965)" & @CRLF
$text &= " Qui a dit? «Le patriotisme, c’est aimer son pays. Le nationalisme, c’est détester celui des autres.»  Réponse: Charles de Gaulle (1890-1970)" & @CRLF
$text &= " «Les religions sont peu prolixes sur cette question que j’adore: que faisait Dieu avant la création?»  Roland Topor (1938-1997)" & @CRLF
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("", 615, 620)
Global $Edit1 = GUICtrlCreateEdit("", 120, 24, 257, 281, BitOR($ES_WANTRETURN,$WS_VSCROLL,$ES_MULTILINE))
GUICtrlSetData(-1, $text)
GUICtrlSetFont(-1,10,0,2,"Comic Sans MS")
$hRichEdit = _GUICtrlRichEdit_Create($Form1,$text,5,350,605,250,BitOR($ES_WANTRETURN,$WS_VSCROLL,$ES_MULTILINE))
                    _GUICtrlRichEdit_SetSel($hRichEdit, 1, 250)
                    _GUICtrlRichEdit_SetCharColor($hRichEdit,0xFF0000)
					_GUICtrlRichEdit_SetFont($hRichEdit,15,"Calibri")
Global $Button1 = GUICtrlCreateButton("voir SplashText", 456, 24, 129, 57)
Global $Button2 = GUICtrlCreateButton("cacher SplashText", 456, 93, 129, 57)
$Label1 = GUICtrlCreateLabel("",420,10)
LabelVertical($Label1, "Mon texte est ici ou là", 0x0000FF,Default)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
	 Case $GUI_EVENT_CLOSE
		 _GUICtrlRichEdit_Destroy($hRichEdit)
		Exit
	 Case $Button1
		 SplashTextOn("Title", $text, -1, -1, -1, -1, 4, "", 10)
	 Case $Button2
		 SplashOff()
 EndSwitch
WEnd
;ID du label, texte, couleur font, couleur arrière plan
Func LabelVertical($Hlabel, $text, $colorFont = Default, $colorBK = Default)
If $text = "" Then Return SetError(1)
$split = StringSplit($text,"")
Local $textN
For $i = 1 To $split[0]
	$textN &= $split[$i] & @CRLF
Next
GUICtrlSetStyle($Hlabel, $SS_CENTER)
GUICtrlSetData($Hlabel, $textN)
If  $colorFont <> Default Then GUICtrlSetColor($Hlabel, $colorFont)
If $colorBK <> Default Then GUICtrlSetBkColor($Hlabel, $colorBK)
$Label2 = GUICtrlCreateLabel($textN, -100, -100)
$hLabel_Handle = GUICtrlGetHandle($Label2)
$W =  _WinAPI_GetClientWidth ( $hLabel_Handle )
$H =  _WinAPI_GetClientHeight ( $hLabel_Handle )
GUICtrlDelete($Label2)
GUICtrlSetPos($Hlabel,Default,Default,$W, $H )
ConsoleWrite($W &">"& $H & @CRLF)
EndFunc
Je voudrai juste un texte qui s'affiche en permanence comme ceci par exemple (créer depuis un logiciel de montage) :
Image

Imaginez que l'image soit animé et que c'est le joueur qui fait bouger l'image. J'aimerais que le texte reste comme ceci sans bouger (je ne suis pas sûr d'avoir était très clair :?: )
"L'enfer est vide, tous les démons sont ici."
- W. Shakespeare
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Afficher du texte à l'écran en permanence.

#4

Message par walkson »

Bonjour,
je ne suis pas sûr d'avoir était très clair :?:
Ben non :P
à tout hasard, je vous propose ce code. flèche droite, la gui va vers la droite, flèche gauche l'inverse, Echap pour fermer

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Global $Form1 = GUICreate("Form1", 395, 278,-1,-1, $WS_POPUP)
Global $Pic1 = GUICtrlCreatePic(@ProgramFilesDir & "\AutoIt3\Examples\GUI\msoobe.jpg", 0, 0, 395, 278)
Global $Label1 = GUICtrlCreateLabel("Hello word", 24, 220, 200, 41)
GUICtrlSetFont(-1, 20, 700, 0, "Georgia")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetState(-1,$GUI_ONTOP)
GUISetState(@SW_SHOW)

HotKeySet ( "{RIGHT}" ,"droite" )
HotKeySet ( "{LEFT}" ,"gauche" )
While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit

 EndSwitch
WEnd
Func droite()
	$pos = WinGetPos($Form1)
	WinMove($Form1,"",$pos[0] + 10,$pos[1])
EndFunc
Func gauche()
	$pos = WinGetPos($Form1)
	WinMove($Form1,"",$pos[0] - 10,$pos[1])
EndFunc

Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Afficher du texte à l'écran en permanence.

#5

Message par Tlem »

Bonsoir.
Je pense que ce code devrait être plus proche de ce qui est demandé.
Bien que dans l'exemple le texte bouge (pour le fun), vous devriez pouvoir l'adapter facilement à votre besoin.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre