Что нового

Событие "выделение кнопки"

Krios

Новичок
Сообщения
4
Репутация
0
Подскажите, пожалуйста, можно ли пользуясь автоитом создать простенькую форму автозапуска, на которой как события будут обрабатываться не только нажатия кнопок, но и их выделение. Необходимо сделать, чтобы при выделении кнопки воспроизводился соответствующий звук, а при нажатии запускалось нужное приложение. Если этой возможности нет, то подскажите, в какой среде это можно сделать и где удобнее. :smile:
 
Автор
K

Krios

Новичок
Сообщения
4
Репутация
0
Есть форма, на ней кнопки, например в столбик. Клавишами "вверх", "вниз" или табом передвигаемся по кнопкам, выделяя их. И при выделении кнопки должен воспроизводиться звук.
Если я неграмотно или непонятно выражаюсь, поправьте меня.
 
Автор
K

Krios

Новичок
Сообщения
4
Репутация
0
Благодарю, qsort. Сейчас поэкспериментирую :ok:
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
"По-умному".

Код:
#Include <ButtonConstants.au3>
#Include <GUIConstantsEx.au3>
#Include <WindowsConstants.au3>

$hForm = GUICreate('MyGUI', 300, 120)
$Button1 = GUICtrlCreateButton('OK', 40, 47, 100, 27, $BS_NOTIFY)
GUICtrlSetState(-1, $GUI_DEFBUTTON)
$Button2 = GUICtrlCreateButton('Cancel', 160, 47, 100, 27, $BS_NOTIFY)
$Label = GUICtrlCreateLabel('555', 10, 98, 200, 14)
GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')
GUISetState()

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
	Switch $hWnd
		Case $hForm
			Switch BitShift($wParam, 16)
				Case $BN_SETFOCUS
					Switch BitAND($wParam, 0xFFFF)
						Case $Button1
							GUICtrlSetData($Label, 'Set focus to "OK" button')
						Case $Button2
							GUICtrlSetData($Label, 'Set focus to "Cancel" button')
					EndSwitch
			EndSwitch
	EndSwitch
	Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND
 
Автор
K

Krios

Новичок
Сообщения
4
Репутация
0
Yashied, не мог бы ты добавить комментарии в код? :smile: Объясни, пожалуйста:
1)Что за параметры передаются в WM_COMMAND?
2)Для чего здесь 3 свитча, BitShift и BitAND?
3)Как модифицировать этот код, чтобы все было также, за исключением того, что не только при фокусировке, но и при нажатии на кнопку "ок" выводилось какое-нибудь сообщение?
Самое главное для меня - 3 пункт, но и понять, как оно работает тоже хочу, помоги, пожалуйста:smile:
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Krios сказал(а):
Как модифицировать этот код, чтобы все было также, за исключением того, что не только при фокусировке, но и при нажатии на кнопку "ок" выводилось какое-нибудь сообщение?

Код:
#Include <ButtonConstants.au3>
#Include <GUIConstantsEx.au3>
#Include <WindowsConstants.au3>

$hForm = GUICreate('MyGUI', 300, 120)
$Button1 = GUICtrlCreateButton('OK', 40, 47, 100, 27, $BS_NOTIFY)
GUICtrlSetState(-1, $GUI_DEFBUTTON)
$Button2 = GUICtrlCreateButton('Cancel', 160, 47, 100, 27, $BS_NOTIFY)
$Label = GUICtrlCreateLabel('555', 10, 98, 200, 14)
GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')
GUISetState()

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			MsgBox(0, '', 'Какое-нибудь сообщение.')
		Case $Button2
			MsgBox(0, '', 'Еще одно какое-нибудь сообщение.')
	EndSwitch
WEnd

Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
    Switch $hWnd
        Case $hForm
            Switch BitShift($wParam, 16)
                Case $BN_SETFOCUS
                    Switch BitAND($wParam, 0xFFFF)
                        Case $Button1
                            GUICtrlSetData($Label, 'Set focus to "OK" button')
                        Case $Button2
                            GUICtrlSetData($Label, 'Set focus to "Cancel" button')
                    EndSwitch
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND


Комментировать абы как я не люблю, а "по нормальному" в твоем случае слишком из далека нужно начинать. Начни с этого или поищи в Google по слову "BN_SETFOCUS".
 
Верх