Что нового

Как получать и обновлять состояние Chexbox'a?

[email protected]@f

Чайник
Сообщения
44
Репутация
2
Хотелось-бы узнать, коим образом можно получить состояние Chexbox'a(вкл/выкл) и обновлять его?
Подскажите, пожалуйста, лучшее решение этой задачи.
З.Ы. Пробовал по аналогии со слайдером через $GUI_CHECKED вот так:
Код:
GUIRegisterMsg($GUI_CHECKED, "BM_GETCHECK")
$onbox = GUICtrlCreateCheckbox("On", 0, 0)
$omg = GuiCtrlCreateLabel("0", 5, 20)
GUISetState()
;_MemoryWrite("0x" & $FHackAddress, $ProcInf, 201, 'short')
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd
Func BM_GETCHECK($hWndGUI, $MsgID, $WParam)
	$onboxst = GUICtrlRead($onbox)
	GUICtrlSetData($omg, $onboxst)
EndFunc

Почему-то получаю ошибку:
Код:
Variable used without being declared.:
$onboxst = GUICtrlRead($onbox)
$onboxst = GUICtrlRead(^ ERROR

Хотя, как видите, переменная описана выше и ей присвоено значение ID Checkbox'a. Со слайдером такой проблемы не возникало.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
1. RegisterMsg должен вызываться после создания формы. (я так думаю.)
2. Объяви $onbox - в пространстве глобальных переменных. Иначе функция его не увидит.
Код:
Global $onbox = GUICtrlCreateCheckbox("On", 0, 0)
 
Автор
P

[email protected]@f

Чайник
Сообщения
44
Репутация
2
Первое - помогло :ok:
Второе - не понадобилось.
Но вот проблема: значение на лейбле всё-равно не обновляется. :(
 
Автор
P

[email protected]@f

Чайник
Сообщения
44
Репутация
2
И ключи от квартиры, где деньхи лежат? ;D
Код:
GUIRegisterMsg($WM_VSCROLL, "WM_VSCROLL")
GuiCreate(Default, 50, 200)
GUIRegisterMsg($GUI_CHECKED, "BM_GETCHECK")
$onbox = GUICtrlCreateCheckbox("On", 0, 0)
$omg = GuiCtrlCreateLabel("0", 5, 20)
$slider = GuiCtrlCreateSlider(10, 31, 30, 165, 0x0002)
GUICtrlSetLimit($slider, 1500)
$heightl = GuiCtrlCreateLabel($Height - 16500, 12, 187, 25)
GuiCtrlSetData($slider, $Height - 16500)
GUISetState()
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd
Func BM_GETCHECK($hWndGUI, $MsgID, $WParam)
	$onboxst = GUICtrlRead($onbox)
	GUICtrlSetData($omg, $onboxst)
EndFunc
Func WM_VSCROLL($hWndGUI, $MsgID, $WParam)
	$SetHeight = 1500 - GUICtrlRead($slider)
	GUICtrlSetData($heightl, $SetHeight)
EndFunc
While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Wend
Exit
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 156
Репутация
2 329
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
;

GUICreate("", 50, 200)

$onbox = GUICtrlCreateCheckbox("On", 0, 0)
$omg = GUICtrlCreateLabel("0", 5, 20)

$slider = GUICtrlCreateSlider(10, 31, 30, 165, 0x0002)
GUICtrlSetLimit($slider, 1500)

$heightl = GUICtrlCreateLabel(20, 12, 187, 25)

GUIRegisterMsg($WM_VSCROLL, "WM_VSCROLL")
GUISetState()

While 1
	$nMsg = GUIGetMsg()
	
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $onbox
			$onboxst = Number(GUICtrlRead($onbox) = $GUI_CHECKED)
			GUICtrlSetData($omg, $onboxst)
	EndSwitch
WEnd

Func WM_VSCROLL($hWndGUI, $MsgID, $WParam, $LParam)
	$SetHeight = 1500 - GUICtrlRead($slider)
	GUICtrlSetData($heightl, $SetHeight)
EndFunc
 
Верх