Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Коды сообщений Windows - WM_ для Кнопок и чекбоксов ? (http://forum.oszone.net/showthread.php?t=150456)

FlatX007 14-09-2009 07:49 1218354

Коды сообщений Windows - WM_ для Кнопок и чекбоксов ?
 
Если есть с десяток кнопок или чекбоксов , неудобно для каждой кнопки, чекбокса... прописывать одинаковое действие, например при нажатии кнопки - проигрывание короткого звука, для чекбокса сохранение его статуса в INI файл.
Можно ли это сделать через WM_ ... чтобы при нажатии любой кнопки в с GUI окне выполнялось одинаковое действие...

Пасиба ...

Знаю есть для слайдера ... вроде :blush2:
Код:

GUIRegisterMsg($WM_HSCROLL  , "WM_HSCROLL"  )

Func WM_HSCROLL($hWnd, $iMsg, $iwParam, $ilParam)
EndFunc


Creat0R 14-09-2009 13:21 1218553

Для общих событии есть 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


FlatX007 14-09-2009 16:26 1218787

Цитата:

Цитата Creat0R
Return $GUI_RUNDEFMSG »

А зачем возвращается это значение ?
Global Const $GUI_RUNDEFMSG = 'GUI_RUNDEFMSG'

Creat0R 14-09-2009 22:29 1219072

Цитата:

Цитата FlatX007
А зачем возвращается это значение ? »

WM_* это Callback-функция, от возврата зависит поведение вызванного события. $GUI_RUNDEFMSG это значение по умолчанию, т.е позволить событию выполниться как и было задуманно.

Подробнее это всё описано в справке к функции GUIRegisterMsg().

FlatX007 15-09-2009 06:37 1219242

Цитата:

Цитата Creat0R
Подробнее это всё описано в справке к функции GUIRegisterMsg(). »

Это я в курсе ,что там написано ... но только я мало что понял :)


Время: 07:49.

Время: 07:49.
© OSzone.net 2001-