Что нового

Как избавиться от мерцания Label?

scanfail

Знающий
Сообщения
244
Репутация
17
Здравствуйте! Как избавиться от мерцания Label?

P.S. - GUIFFLabel не предлагать, он некорректно работает с GUI элементом Tab.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
скрипт можно увидеть?
 
Автор
S

scanfail

Знающий
Сообщения
244
Репутация
17
Вот пример:
Код:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <NomadMemory.au3>

$Form = GUICreate("1", 100, 34, 192, 124)
$Label = GUICtrlCreateLabel("Example", 28, 8, 44, 17)
GUISetState(@SW_SHOW)

Global $Process = "Game.exe"
Global $Window = "Game"

SetPrivilege("SeDebugPrivilege", 1)
Global $sModule = $Process
Global $ProcessID = WinGetProcess($Window)
SetPrivilege("SeDebugPrivilege", 1)
Global $DllInformation = _MemoryOpen($ProcessID)
Global $baseADDR = _MemoryModuleGetBaseAddress($ProcessID, $sModule)

Global $Base0 = 0x1

While 1

	$Base1 = _MemoryRead($Base0, $DllInformation, "dword")
	GUICtrlSetData($Label, $Base1)

	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Обновляй данные в Label только, если значение изменилось.
 

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
Yashied
А что если они изменяются быстрее чем раз в секунду?


Добавлено:
Сообщение автоматически объединено:

Yashied
И вообще, почему в С++ такое не наблюдается?
а в AutoIt мигает...
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Код:
#Include <APIConstants.au3>
#Include <WinAPIEx.au3>

$hForm = GUICreate('MyGUI', 400, 400)
$hLabel = _WinAPI_CreateWindowEx(0, 'Static', '', BitOR($WS_CHILD, $WS_VISIBLE), 10, 10, 100, 14, $hForm)
_SendMessage($hLabel, $WM_SETFONT, _WinAPI_GetStockObject($DEFAULT_GUI_FONT), 1)
GUISetState()

Do
	_WinAPI_SetWindowText($hLabel, Random(0, 100000, 1))
	Sleep(50)
Until GUIGetMsg() = -3

_WinAPI_DestroyWindow($hLabel)
 

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
Yashied
То что нужно :smile:


Добавлено:
Сообщение автоматически объединено:

Yashied
Ах да, как задать вот эти параметры этому лейбу?
Код:
GUICtrlSetBkColor(-1,-2)
GUICtrlSetColor(-1,0x090909)
GUICtrlSetFont(-1,14,500,0,'Calibri')



Добавлено:
Сообщение автоматически объединено:

Yashied
Кстати, вот так ничего не моргает...
Код:
#Include <APIConstants.au3>
#Include <WinAPIEx.au3>

$hForm = GUICreate('MyGUI', 400, 400)
$hLabel = _WinAPI_CreateWindowEx(0, 'Static', '', BitOR($WS_CHILD, $WS_VISIBLE), 10, 10, 100, 14, $hForm)
_SendMessage($hLabel, $WM_SETFONT, _WinAPI_GetStockObject($DEFAULT_GUI_FONT), 1)
$hLabel2 = GUICtrlGetHandle(GUICtrlCreateLabel('',10,100,100,14))
GUISetState()

Do
    _WinAPI_SetWindowText($hLabel, Random(0, 100000, 1))
	_WinAPI_SetWindowText($hLabel2, Random(0, 100000, 1))
Until GUIGetMsg() = -3

_WinAPI_DestroyWindow($hLabel)


И уже придумал функцию...
Код:
Func _GAPI_GUICtrlSetData($CID, $Data)
	if not IsHWnd($CID) Then $CID = GUICtrlGetHandle($CID)
	Return _WinAPI_SetWindowText($CID, $Data)
EndFunc
 

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
Yashied
у меня лейб находится на картинках, он конечно не моргает, но когда новое значение он его заливает...
Т.е накладывает друг на друга.
 
Верх