Что нового

[Окна, Диалоги] Идея/Концепия создания бегущей строки в заголовке окна и в панели задач

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
AutoIt: 3.3.6.0
Версия: 0.1

Категория: Окна и диалоги

Описание:

Небольшой пример демонстрирующий как можно сделать бегающую строку в качестве заголовке окна, как это реализовано, например, в проигрывателе Winamp. Пользы от данного мероприятия, практически, нет. Но может кто-то захочет приукрасить свои GUI подобной приблудой.

Код/Пример:
Код:
AdlibRegister("TitleChanger", 200)
$title = "***My Long Long Title to be changed***"
$hGUI = GUICreate($title, 200, 200)
GUISetState()

Do
	$msg = GUIGetMsg()
Until $msg = -3

Func TitleChanger()
	$title = WinGetTitle($hGUI)
	$newtitle = StringMid($title, 2) & StringLeft($title, 1)
	WinSetTitle($title, "", $newtitle)
EndFunc

Источник: Kaster (kastermight [at] gmail dot com) Портал русского сообщества пользователей AutoIt
Автор(ы): Kaster
 

Suppir

Продвинутый
Сообщения
967
Репутация
62
прикольная штучка. Можно так рекламу своим программам давать :smile:
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Решил немного усовершенствовать эту тему:

Код:
#include <GUIConstantsEx.au3>

Global $ahGTAT_Wnd[1][2]

$hGUI1 = GUICreate("GUI 1 - My Long Long Title to be changed... ", 200, 200)
GUISetState()
_GUIAnimatedTitleSet($hGUI1)

$hGUI2 = GUICreate("GUI 2 - My Long Long Title to be changed... ", 200, 200, -1, 100)
GUISetState()
_GUIAnimatedTitleSet($hGUI2)

Sleep(3000)
_GUIAnimatedTitleUnSet($hGUI1)
WinActivate($hGUI1)

While 1
	$nMsg = GUIGetMsg()
	
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd

Func _GUIAnimatedTitleSet($hWnd = 0)
	If $ahGTAT_Wnd[0][0] <= 0 Then
		AdlibRegister("_GUIAnimatedTitleSet", 200)
	EndIf
	
	If @NumParams > 0 Then
		$ahGTAT_Wnd[0][0] += 1
		ReDim $ahGTAT_Wnd[$ahGTAT_Wnd[0][0]+1][2]
		$ahGTAT_Wnd[$ahGTAT_Wnd[0][0]][0] = $hWnd
		$ahGTAT_Wnd[$ahGTAT_Wnd[0][0]][1] = WinGetTitle($hWnd) ;Original Title
		Return 
	EndIf
	
	For $i = 1 To $ahGTAT_Wnd[0][0]
		Local $sTitle = WinGetTitle($ahGTAT_Wnd[$i][0])
		WinSetTitle($ahGTAT_Wnd[$i][0], "", StringMid($sTitle, 2) & StringLeft($sTitle, 1))
	Next
EndFunc

Func _GUIAnimatedTitleUnSet($hWnd)
	Local $aTmp[1][2]
	
	For $i = 1 To $ahGTAT_Wnd[0][0]
		If $ahGTAT_Wnd[$i][0] = $hWnd Then
			WinSetTitle($ahGTAT_Wnd[$i][0], "", $ahGTAT_Wnd[$i][1])
		Else
			$aTmp[0][0] += 1
			ReDim $aTmp[$aTmp[0][0]+1][2]
			$aTmp[$aTmp[0][0]][0] = $ahGTAT_Wnd[$i][0]
			$aTmp[$aTmp[0][0]][1] = $ahGTAT_Wnd[$i][1]
		EndIf
	Next
	
	$ahGTAT_Wnd = $aTmp
EndFunc
 
Верх