Что нового

_WinAPI_SetWindowText - не обновляется текст элемента управления окна

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Код:
#Include <APIConstants.au3>
#Include <WinAPIEx.au3>

$hForm = GUICreate('', 400, 400)
$lb = GUICtrlCreateLabel('',10,100,100,14)
GUICtrlSetBkColor(-1, $WS_EX_TRANSPARENT)
$hLabel = GUICtrlGetHandle($lb)
GUISetState()

Do
    _WinAPI_SetWindowText($hLabel, Random(0, 100000, 1))
Until GUIGetMsg() = -3
тоесть, конфликт со стилем $WS_EX_TRANSPARENT
как подружить их?
 

Yashied

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

$hForm = GUICreate('', 400, 400)
$lb = GUICtrlCreateLabel('', 10, 100, 100, 14)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUISetState()

Do
	GUICtrlSetData($lb, Random(0, 100000, 1))
Until GUIGetMsg() = -3
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Yashied :smile: шутку оценил
не стал поднимать старую тему, поэтому вынес в новую
есть момент
Yashied
у меня лейб находится на картинках, он конечно не моргает, но когда новое значение он его заливает...
Т.е накладывает друг на друга.
 

Yashied

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

$hForm = GUICreate('', 400, 400)
GUICtrlCreatePic('MyPic.bmp', 0, 0, 400, 400)
GUICtrlSetState(-1, $GUI_DISABLE)
$hPic = GUICtrlGetHandle(-1)
GUICtrlCreateLabel('', 10, 100, 100, 14)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
$hLabel = GUICtrlGetHandle(-1)
GUISetState()

Do
	_WinAPI_InvalidateRect($hPic, _WinAPI_CreateRectEx(10, 100, 100, 14))
	_WinAPI_SetWindowText($hLabel, Random(0, 100000, 1))
Until GUIGetMsg() = -3
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
конкретно по вопросу ответ получен.
пример
Код:
#include <APIConstants.au3>
#include <WinAPIEx.au3>
#include <Icons.au3>
$hForm = GUICreate('', 400, 400, -1, -1, $WS_POPUP)
$pic1 = GUICtrlCreatePic('', 0, 0, 400, 400)
GUICtrlSetState(-1, $GUI_DISABLE)
$hPic1 = GUICtrlGetHandle(-1)
_SetImage($pic1, @ScriptDir & '\wt.png')
$pic2 = GUICtrlCreatePic('', 0, 0, 400, 400)
GUICtrlSetState(-1, $GUI_DISABLE)
$hPic2 = GUICtrlGetHandle(-1)
_SetImage($pic2, @ScriptDir & '\bck.png')
GUICtrlCreateLabel('', 100, 20, 200, 200, $SS_CENTER)
GUICtrlSetFont(-1, 16, 800, 0, "Archangelsk")
GUICtrlSetColor(-1, 0xffffff)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
$hLabel = GUICtrlGetHandle(-1)
GUISetState()

Do
	;Sleep(50);если установить задержку, то не мерцает
	_WinAPI_InvalidateRect($hPic1, _WinAPI_CreateRectEx(100, 20, 200, 200))
	_WinAPI_InvalidateRect($hPic2, _WinAPI_CreateRectEx(100, 20, 200, 200))
	_WinAPI_SetWindowText($hLabel, Random(0, 100000, 1))
Until GUIGetMsg() = -3

Естественно, реальный код другой и в нем происходит не мерцание, а "уплотнение" цвета второй, полупрозрачной, картинки.

Сделал так
Код:
#include <APIConstants.au3>
#include <WinAPIEx.au3>
#include <Icons.au3>
$hForm = GUICreate('', 400, 400, -1, -1, $WS_POPUP, $WS_EX_CONTROLPARENT)
$pic1 = GUICtrlCreatePic('', 0, 0, 400, 400)
GUICtrlSetState(-1, $GUI_DISABLE)
_SetImage($pic1, @ScriptDir & '\wt.png')
$pic2 = GUICtrlCreatePic('', 0, 0, 400, 400)
GUICtrlSetState(-1, $GUI_DISABLE)
_SetImage($pic2, @ScriptDir & '\bck.png')
GUISetState(@SW_SHOW, $hForm)
$Form = GUICreate("", 200, 200, 100, 20, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $hForm)
GUISetBkColor(0x808080)
$hLabel = GUICtrlCreateLabel('', 0, 0, 200, 200, $SS_CENTER)
GUICtrlSetFont(-1, 16, 800, 0, "Archangelsk")
GUICtrlSetColor(-1, 0xffffff)
GUISetState(@SW_SHOW, $Form)
_WinAPI_SetLayeredWindowAttributes($Form, 0x808080, 255)
Do
	GUICtrlSetData($hLabel, Random(0, 100000, 1))
Until GUIGetMsg() = -3
 

Вложения

  • bck.png
    bck.png
    1.6 КБ · Просмотры: 4
  • wt.png
    wt.png
    1.3 КБ · Просмотры: 4
  • Icons.au3
    41.9 КБ · Просмотры: 2
Верх