-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
Коды сообщений Windows - WM_ для Кнопок и чекбоксов ?
Если есть с десяток кнопок или чекбоксов , неудобно для каждой кнопки, чекбокса... прописывать одинаковое действие, например при нажатии кнопки - проигрывание короткого звука, для чекбокса сохранение его статуса в INI файл.
Можно ли это сделать через WM_ ... чтобы при нажатии любой кнопки в с GUI окне выполнялось одинаковое действие...
Пасиба ...
Знаю есть для слайдера ... вроде :blush2:
Код:
GUIRegisterMsg($WM_HSCROLL , "WM_HSCROLL" )
Func WM_HSCROLL($hWnd, $iMsg, $iwParam, $ilParam)
EndFunc
|
Для общих событии есть WM_COMMAND:
Код:
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
;
$hGUI = GUICreate("WM_COMMAND")
$Button = GUICtrlCreateButton("Button", 20, 80)
$CheckBox = GUICtrlCreateCheckbox("Checkbox", 20, 120)
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
GUISetState()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func WM_COMMAND($hWndGUI, $MsgID, $WParam, $LParam)
Local $iIDFrom = BitAND($wParam, 0xFFFF) ; Low Word
Local $iCode = BitShift($wParam, 16) ; Hi Word
ConsoleWrite($iIDFrom & ":" & GUICtrlRead($iIDFrom, 1) & @CRLF)
Return $GUI_RUNDEFMSG
EndFunc
Но я лично не стал бы это использовать, лучше так:
Код:
#include <GuiConstantsEx.au3>
$hGUI = GUICreate("Events")
$Button = GUICtrlCreateButton("Button", 20, 80)
$CheckBox = GUICtrlCreateCheckbox("Checkbox", 20, 120)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case Else
If $nMsg <= 0 Then ContinueLoop
ConsoleWrite($nMsg & ":" & GUICtrlRead($nMsg, 1) & @CRLF)
EndSwitch
WEnd
|
А зачем возвращается это значение ?
Global Const $GUI_RUNDEFMSG = 'GUI_RUNDEFMSG'
|
Цитата:
Цитата FlatX007
А зачем возвращается это значение ? »
|
WM_* это Callback-функция, от возврата зависит поведение вызванного события. $GUI_RUNDEFMSG это значение по умолчанию, т.е позволить событию выполниться как и было задуманно.
Подробнее это всё описано в справке к функции GUIRegisterMsg().
|
Цитата:
Цитата Creat0R
Подробнее это всё описано в справке к функции GUIRegisterMsg(). »
|
Это я в курсе ,что там написано ... но только я мало что понял :)
|
Время: 07:49.
© OSzone.net 2001-