Jump to content

WM_NOTIFY only gets 2 msg from iCode


Recommended Posts

Hi forum, searching an easy way to get a hover status from a control i learn to use the window message WM_NOTIFY to do the work, but this message only gets two types of notification from the iCode

-12

-1249 ; this when the mouse pass over a control and when it leaves

supposedly there are 19 notifications codes according MDSN

What i`m doing wrong?

#include <WindowsConstants.au3>
#include <winapiex.au3>
global $i = 0
Global $check = False
$hGui = GUICreate("Test hover", -1, -1)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
$button1 = GUICtrlCreateButton("No Hover", 10, 10, 100, 50)
$button2 = GUICtrlCreateButton("No Hover", 10, 70, 100, 50)
GUISetState()

Do
Until GUIGetMsg() = -3

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)                 ; WN_NOTIFY - http://msdn.microsoft.com/en-us/library/bb775583%28VS.85%29.aspx
    Local $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)         ; NMHDR Structure - http://msdn.microsoft.com/en-us/library/bb775514%28v=VS.85%29.aspx
    Local $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    Local $idFrom = DllStructGetData($tNMHDR, "idFrom")
    Local $iCode = DllStructGetData($tNMHDR, "Code")
;~  If $iCode <> -12 Then ConsoleWrite($iCode & @CRLF)
    $i +=1
    ConsoleWrite("The notification code is "&$iCode &" and the number of times that the message was processed is "&$i &@CRLF)  ; This for check propurses
    Switch $iCode
        Case -1249                                               ; $NM_HOVER - http://msdn.microsoft.com/en-us/library/bb775536%28VS.85%29.aspx
            $check = Not $check
            If $check Then
                GUICtrlSetData($idFrom, "Hover")
            Else
                GUICtrlSetData($idFrom, "No Hover")
            EndIf
    EndSwitch
    Return "GUI_RUNDEFMSG"
EndFunc   ;==>WM_NOTIFY
Edited by monoscout999
Link to comment
Share on other sites

Hi forum, searching an easy way to get a hover status from a control i learn to use the window message WM_NOTIFY to do the work, but this message only gets two types of notification from the iCode

-12

-1249 ; this when the mouse pass over a control and when it leaves

supposedly there are 19 notifications codes according MDSN

What i`m doing wrong?

#include <WindowsConstants.au3>
#include <winapiex.au3>
global $i = 0
Global $check = False
$hGui = GUICreate("Test hover", -1, -1)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
$button1 = GUICtrlCreateButton("No Hover", 10, 10, 100, 50)
$button2 = GUICtrlCreateButton("No Hover", 10, 70, 100, 50)
GUISetState()

Do
Until GUIGetMsg() = -3

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)                 ; WN_NOTIFY - http://msdn.microsoft.com/en-us/library/bb775583%28VS.85%29.aspx
    Local $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)         ; NMHDR Structure - http://msdn.microsoft.com/en-us/library/bb775514%28v=VS.85%29.aspx
    Local $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    Local $idFrom = DllStructGetData($tNMHDR, "idFrom")
    Local $iCode = DllStructGetData($tNMHDR, "Code")
;~  If $iCode <> -12 Then ConsoleWrite($iCode & @CRLF)
    $i +=1
    ConsoleWrite("The notification code is "&$iCode &" and the number of times that the message was processed is "&$i &@CRLF)  ; This for check propurses
    Switch $iCode
        Case -1249                                               ; $NM_HOVER - http://msdn.microsoft.com/en-us/library/bb775536%28VS.85%29.aspx
            $check = Not $check
            If $check Then
                GUICtrlSetData($idFrom, "Hover")
            Else
                GUICtrlSetData($idFrom, "No Hover")
            EndIf
    EndSwitch
    Return "GUI_RUNDEFMSG"
EndFunc   ;==>WM_NOTIFY

BCN_HOTITEMCHANGE Notification Code

http://msdn.microsoft.com/en-us/library/bb775984%28v=VS.85%29.aspx

http://msdn.microsoft.com/en-us/library/bb775959%28v=VS.85%29.aspx

#include <GUIConstantsEx.au3>
#include <GuiButton.au3>
#include <WindowsConstants.au3>
global $i = 0
Global $check = False
$hGui = GUICreate("Test hover", -1, -1)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
$button1 = GUICtrlCreateButton("No Hover", 10, 10, 100, 50)
$button2 = GUICtrlCreateButton("No Hover", 10, 70, 100, 50)
GUISetState()

Do
Until GUIGetMsg() = -3

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)    ; WN_NOTIFY - http://msdn.microsoft.com/en-us/library/bb775583%28VS.85%29.aspx
    Local $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)         ; NMHDR Structure - http://msdn.microsoft.com/en-us/library/bb775514%28v=VS.85%29.aspx
    Local $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    Local $idFrom = DllStructGetData($tNMHDR, "idFrom")
    Local $iCode = DllStructGetData($tNMHDR, "Code")
    Local $BCN_HOTITEMCHANGE = -1249 , $HICF_ENTERING = 0x10 , $HICF_LEAVING = 0x20 , $HICF_MOUSE = 0x1


;~  If $iCode <> -12 Then ConsoleWrite($iCode & @CRLF)
    $i +=1
    ConsoleWrite("The notification code is "&$iCode &" and the number of times that the message was processed is "&$i &@CRLF)  ; This for check propurses
    Switch $iCode
        Case $BCN_HOTITEMCHANGE                                           ; $NM_HOVER - http://msdn.microsoft.com/en-us/library/bb775536%28VS.85%29.aspx
            $tagNMBCHOTITEM = $tagNMHDR & ";DWORD dwFlags"
            $NMBCHOTITEM = DllStructCreate($tagNMBCHOTITEM, $ilParam)
            $dwFlags = DllStructGetData($NMBCHOTITEM, "dwFlags")
            Select
            Case BitAND($dwFlags,$HICF_ENTERING)
                GUICtrlSetData($idFrom, "Hover")
            Case BitAND($dwFlags,$HICF_LEAVING)
                GUICtrlSetData($idFrom, "No Hover")
            EndSelect
    EndSwitch
    Return "GUI_RUNDEFMSG"
EndFunc   ;==>WM_NOTIFY

Button Hover Button_ButtonHover / Static_ButtonHover

Second Static_ButtonHover /Fast response GuiSetBackGround / Image And Sound

صرح السماء كان هنا

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...