Page 1 sur 1

Afficher du texte à l'écran en permanence.

Posté : ven. 30 oct. 2020 19:06
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

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

Posté : ven. 30 oct. 2020 22:27
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

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

Posté : sam. 31 oct. 2020 10:16
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 :?: )

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

Posté : sam. 31 oct. 2020 16:07
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


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

Posté : sam. 31 oct. 2020 19:28
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.