Что нового

Обновление переменной в которой находится значение GUICtrlRead

P@S@f

Новичок
Сообщения
44
Репутация
2
И снова Бэтмен возвращается...
Вопрос таков: как мне динамически обновлять значение переменной в которую функция GUICtrlRead() возвращает положение слайдера?
З.Ы. Манул я курил, но понял не до конца, по-этому на практике у меня вышел полный бред.
 
Автор
P

P@S@f

Новичок
Сообщения
44
Репутация
2
Ой, спасибо, и как это я её не нашел... Видимо потому-что в поиске по-умолчанию стоит "по фразе целиком"


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

Хм, теперь появилась другая проблема: слайдер выдает значения наоборот - то-есть нижнее значение - максимальное, а верхнее - минимальное :wacko:
Код:
GUIRegisterMsg($WM_VSCROLL, "WM_HVSCROLL")
$slider = GuiCtrlCreateSlider(10, 15, 30, 140, 0x0002)
While 1
    $nMsg = GUIGetMsg()
    
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd
Func WM_HVSCROLL($hWndGUI, $MsgID, $WParam)
	GUICtrlGetHandle($slider)
	$SetHeight = GUICtrlRead($slider)
	GuiCtrlCreateLabel($SetHeight, 9, 150)
EndFunc
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
P@S@f [?]
слайдер выдает значения наоборот
В примере по ссылке что я указал, видно каким образом это значение переворачивается.

P.S
У тебя GUICtrlGetHandle используется без назначения, т.е оно вобщем то и не нужно. И ещё, не нужно постоянно создавать элемент Label, его можно обновлять:

Код:
GUIRegisterMsg($WM_VSCROLL, "WM_HVSCROLL")
$slider = GuiCtrlCreateSlider(10, 15, 30, 140, 0x0002)
GUICtrlSetLimit($slider, 100, 0)
$label = GuiCtrlCreateLabel("0", 9, 150)

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

Func WM_HVSCROLL($hWndGUI, $MsgID, $WParam)
    $SetHeight = GUICtrlRead($slider)
    GUICtrlSetData($label, 100 - $SetHeight)
EndFunc
 
Автор
P

P@S@f

Новичок
Сообщения
44
Репутация
2
Да-да я потом понял когда в туалете сидел...
Просто у меня там границы не от 0 до 100, а от 16500 до 18000... пришлось математику немного вспоминать...
Еще раз спасибо :smile:


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

В итоге получилось так:
Код:
GUIRegisterMsg($WM_VSCROLL, "WM_HVSCROLL")
$slider = GuiCtrlCreateSlider(10, 15, 30, 140, 0x0002)
GUICtrlSetLimit($slider, 1500, 0)
$heightl = GuiCtrlCreateLabel("0", 9, 150)
GuiCtrlSetData($slider, $Height)
GUISetState()
While 1
    $nMsg = GUIGetMsg()
    
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd
Func WM_HVSCROLL($hWndGUI, $MsgID, $WParam)
	$SetHeight = 1500 - GUICtrlRead($slider)
	GUICtrlSetData($heightl, $SetHeight)
	_MemoryWrite("0x" & $HeightAddress, $ProcInf, $SetHeight + 16500, 'short')
EndFunc



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

Во, теперь всё как надо. Еще раз спасибо за помощь :beer: А я уже спать пойду.
И да, тема решена :laugh:
 
Верх