Hello does someone know the constant of an Mouseover event at a button?
I want to create a hoover effect.
			
			
									
									Mouseover Button
Mouseover Button
Apart from that Mrs Lincoln, how was the show?
						- netmaestro
 - PureBasic Bullfrog

 - Posts: 8452
 - Joined: Wed Jul 06, 2005 5:42 am
 - Location: Fort Nelson, BC, Canada
 
Code: Select all
Procedure CB(hwnd, msg, wparam, lparam)
  result = #PB_ProcessPureBasicEvents
  If msg = #WM_SETCURSOR
    If wparam = GadgetID(0)
      SetGadgetText(1, "ON Button")
    Else
      SetGadgetText(1, "Off Button")    
    EndIf
  EndIf
  ProcedureReturn result
EndProcedure
OpenWindow(0,0,0,320,200,"",$C80001)
CreateGadgetList(WindowID(0))
ButtonGadget(0,130,90,100,20,"I'm a button!")
TextGadget(1,130, 40, 100,20,"Off Button")
SetWindowCallback(@CB())
Repeat 
  ev=WaitWindowEvent()
Until ev=#WM_CLOSEBERESHEIT
						- Fluid Byte
 - Addict

 - Posts: 2336
 - Joined: Fri Jul 21, 2006 4:41 am
 - Location: Berlin, Germany
 
- netmaestro
 - PureBasic Bullfrog

 - Posts: 8452
 - Joined: Wed Jul 06, 2005 5:42 am
 - Location: Fort Nelson, BC, Canada
 
Here's some code showing how to use that one. Note that it only works for windows with XP skins enabled. If the app isn't compiled with the XP Skin Support option, the button won't send the WM_NOTIFY message.
			
			
									
									Code: Select all
#HICF_ENTERING = 17 
#HICF_LEAVING = 33 
#BUTTON = 0 
Procedure CallBack(hwnd, msg, wparam, lparam) 
  result = #PB_ProcessPureBasicEvents 
  If msg = #WM_NOTIFY 
    If wparam = #BUTTON 
      *status.NMBCHOTITEM = lparam 
      Select *status\dwFlags 
        Case #HICF_ENTERING 
          Debug "Entering" 
          SetGadgetText(1, "ON button") 
        Case #HICF_LEAVING 
          Debug "Leaving" 
          SetGadgetText(1, "OFF button") 
      EndSelect 
    EndIf 
  EndIf 
  ProcedureReturn result 
EndProcedure 
OpenWindow(0,0,0,320,200,"",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) 
CreateGadgetList(WindowID(0)) 
ButtonGadget(0,130,90,100,20,"I'm a button!") 
TextGadget(1,130, 40, 100,20,"OFF Button") 
SetWindowCallback(@CallBack()) 
Repeat 
  ev=WaitWindowEvent() 
Until ev=#WM_CLOSEBERESHEIT
						- netmaestro
 - PureBasic Bullfrog

 - Posts: 8452
 - Joined: Wed Jul 06, 2005 5:42 am
 - Location: Fort Nelson, BC, Canada
 
- 
				localmotion34
 - Enthusiast

 - Posts: 665
 - Joined: Fri Sep 12, 2003 10:40 pm
 - Location: Tallahassee, Florida
 
here is a COMPLETE hoverbutton, updated from my Morebutton source library.
use any part you like, just give me props somewhere.
			
			
									
									use any part you like, just give me props somewhere.
Code: Select all
#WM_MOUSEHOVER = $2A1
#WM_MOUSELEAVE = $2A3
#TME_HOVER = 1
#TME_LEAVE = 2
#PB_HoverImage=$FF10
#PB_HoverText=$FF11
Structure hover
  wdth.l
  Height.l
  image.l
  type.l 
EndStructure
Procedure callback(hwnd,msg,wParam,lParam)
  Protected membmp 
  Select msg
    Case #WM_MOUSEMOVE
      If buttondown=1
      Else 
        Structure myTRACKMOUSEEVENT
          cbSize.l
          dwFlags.l
          hwndTrack.l  
          dwHoverTime.l
        EndStructure
        mte.myTRACKMOUSEEVENT
        mte\cbSize = SizeOf(myTRACKMOUSEEVENT)
        mte\dwFlags = #TME_LEAVE
        mte\hwndTrack = hwnd
        hdc=GetDC_(hwnd)
        GetClientRect_(hwnd,@rct.RECT)
        TrackMouseEvent_(mte)
        DrawEdge_(hdc,@rct,#EDGE_RAISED,#BF_RECT)
      EndIf 
    Case #WM_MOUSEHOVER 
      
    Case #WM_MOUSELEAVE
      *inf.hover=GetProp_(hwnd,"windowinfo")
      Select *inf\type
        Case #PB_HoverText
          dc=GetDC_(hwnd)
          newdc=CreateCompatibleDC_(dc)
          membmp=CreateCompatibleBitmap_(dc,*inf\wdth,*inf\Height)
          brush=CreateSolidBrush_(GetSysColor_(#COLOR_btnface))
          pen=createpen_(#PS_SOLID,0,GetSysColor_(#COLOR_btnface))
          SelectObject_(newdc,membmp)
          SelectObject_(newdc,brush)
          SelectObject_(newdc,pen)
          rectangle_(newdc,0,0,*inf\wdth,*inf\Height)
          rect.RECT
          rect\left=0:rect\right=*inf\wdth:rect\top=0:rect\bottom=*inf\Height
          text.s=Space(255)
          fontid=GetStockObject_(#ANSI_VAR_FONT)	
          SelectObject_(newdc,fontid)
          GetWindowText_(hwnd,text.s,255)
          SetBkColor_(newdc,GetSysColor_(#COLOR_btnface))
          settextalign_(newdc,#TA_CENTER)
          texty=(*inf\Height-14)/2
          textx=(*inf\wdth)/2
          exttextout_(newdc,textx,texty,#ETO_CLIPPED,@rect,text.s,Len(text),0)
          BitBlt_(dc,0,0,*inf\wdth,*inf\Height,newdc,0,0,#SRCCOPY)
          ReleaseDC_(hwnd,dc)
          DeleteDC_(newdc)
          DeleteObject_(membmp)
          buttondown=0
        Case #PB_HoverImage
          dc=GetDC_(hwnd)
          newdc=CreateCompatibleDC_(dc)
          brush=CreateSolidBrush_(GetSysColor_(#COLOR_btnface))
          pen=createpen_(#PS_SOLID,0,GetSysColor_(#COLOR_btnface))
          membmp=*inf\image 
          SelectObject_(newdc,brush)
          SelectObject_(newdc,pen)
          rect.RECT
          SelectObject_(newdc,membmp)
          rect\left=0:rect\right=*inf\wdth:rect\top=0:rect\bottom=*inf\Height
          DrawEdge_(dc,@rect,#EDGE_SUNKEN,#BF_TOP|#BF_LEFT|#BF_RIGHT|#BF_BOTTOM	)
          BitBlt_(dc,0,0,*inf\wdth,*inf\Height,newdc,0,0,#SRCCOPY)
          ;ReleaseDC_(hwnd,dc)
          DeleteDC_(newdc)
          buttondown=0
      EndSelect 
      ProcedureReturn 0 
    Case #WM_PAINT
      *inf.hover=GetProp_(hwnd,"windowinfo")
      Select *inf\type
        Case #PB_HoverText 
          dc=GetDC_(hwnd)
          newdc=CreateCompatibleDC_(dc)
          membmp=CreateCompatibleBitmap_(dc,*inf\wdth,*inf\Height)
          brush=CreateSolidBrush_(GetSysColor_(#COLOR_btnface))
          pen=createpen_(#PS_SOLID,0,GetSysColor_(#COLOR_btnface))
          SelectObject_(newdc,membmp)
          SelectObject_(newdc,brush)
          SelectObject_(newdc,pen)
          rectangle_(newdc,0,0,*inf\wdth,*inf\Height)
          rect.RECT
          rect\left=0:rect\right=*inf\wdth:rect\top=0:rect\bottom=*inf\Height
          text.s=Space(255)
          fontid=GetStockObject_(#ANSI_VAR_FONT)	
          SelectObject_(newdc,fontid)
          GetWindowText_(hwnd,text.s,255)
          SetBkColor_(newdc,GetSysColor_(#COLOR_btnface))
          settextalign_(newdc,#TA_CENTER)
          texty=(*inf\Height-14)/2
          textx=(*inf\wdth)/2
          exttextout_(newdc,textx,texty,#ETO_CLIPPED,@rect,text.s,Len(text),0)
          BitBlt_(dc,0,0,*inf\wdth,*inf\Height,newdc,0,0,#SRCCOPY)
          ReleaseDC_(hwnd,dc)
          DeleteDC_(newdc)
          DeleteObject_(membmp)
        Case #PB_HoverImage
          dc=GetDC_(hwnd)
          newdc=CreateCompatibleDC_(dc)
          brush=CreateSolidBrush_(GetSysColor_(#COLOR_btnface))
          pen=createpen_(#PS_SOLID,0,GetSysColor_(#COLOR_btnface))
          membmp=*inf\image 
          SelectObject_(newdc,brush)
          SelectObject_(newdc,pen)
          rectangle_(newdc,0,0,*inf\wdth,*inf\Height)
          rect.RECT
          SelectObject_(newdc,membmp)
          rect\left=0:rect\right=*inf\wdth:rect\top=0:rect\bottom=*inf\Height
          BitBlt_(dc,0,0,*inf\wdth,*inf\Height,newdc,0,0,#SRCCOPY)
          ReleaseDC_(hwnd,dc)
          DeleteDC_(newdc)
      EndSelect 
      ;ProcedureReturn 0
    Case #WM_LBUTTONDOWN
      *inf.hover=GetProp_(hwnd,"windowinfo")
      Select *inf\type
        Case #PB_HoverText 
          buttondown=1
          rect.RECT
          dc=GetDC_(hwnd)
          newdc=CreateCompatibleDC_(dc)
          membmp=CreateCompatibleBitmap_(dc,*inf\wdth,*inf\Height)
          brush=CreateSolidBrush_(GetSysColor_(#COLOR_btnface ))
          pen=createpen_(#PS_SOLID,1,GetSysColor_(#COLOR_GRAYTEXT ))
          SelectObject_(newdc,membmp)
          SelectObject_(newdc,brush)
          SelectObject_(newdc,pen)
          rectangle_(newdc,0,0,*inf\wdth,*inf\Height)
          rect\left=0:rect\right=*inf\wdth:rect\top=0:rect\bottom=*inf\Height
          text.s=Space(255)
          fontid=GetStockObject_(#ANSI_VAR_FONT)	
          SelectObject_(newdc,fontid)
          GetWindowText_(hwnd,text.s,255)
          SetBkColor_(newdc,GetSysColor_(#COLOR_btnface))
          settextalign_(newdc,#TA_CENTER)
          texty=(*inf\Height-14)/2
          textx=(*inf\wdth)/2
          exttextout_(newdc,textx+2,texty+2,#ETO_CLIPPED,@rect,text.s,Len(text),0)
          DrawEdge_(newdc,@rect,#EDGE_SUNKEN,#BF_TOP|#BF_LEFT|#BF_RIGHT|#BF_BOTTOM	)
          BitBlt_(dc,0,0,*inf\wdth,*inf\Height,newdc,0,0,#SRCCOPY)
          ReleaseDC_(hwnd,dc)
          DeleteDC_(newdc)
          DeleteObject_(membmp)
        Case #PB_HoverImage
          buttondown=1
          dc=GetDC_(hwnd)
          newdc=CreateCompatibleDC_(dc)
          brush=CreateSolidBrush_(GetSysColor_(#COLOR_btnface))
          pen=createpen_(#PS_SOLID,0,GetSysColor_(#COLOR_btnface))
          membmp=*inf\image 
          SelectObject_(newdc,brush)
          SelectObject_(newdc,pen)
          rectangle_(newdc,0,0,*inf\wdth,*inf\Height)
          rect.RECT
          SelectObject_(newdc,membmp)
          rect\left=0:rect\right=*inf\wdth:rect\top=0:rect\bottom=*inf\Height
          BitBlt_(dc,2,2,*inf\wdth-2,*inf\Height-2,newdc,0,0,#SRCCOPY)
          DrawEdge_(dc,@rect,#EDGE_SUNKEN,#BF_TOP|#BF_LEFT|#BF_RIGHT|#BF_BOTTOM	)
          ReleaseDC_(hwnd,dc)
          DeleteDC_(newdc)
      EndSelect 
    Case #WM_LBUTTONUP
      *inf.hover=GetProp_(hwnd,"windowinfo")
      Select *inf\type
        Case #PB_HoverText
          buttondown=0
          dc=GetDC_(hwnd)
          newdc=CreateCompatibleDC_(dc)
          membmp=CreateCompatibleBitmap_(dc,*inf\wdth,*inf\Height)
          brush=CreateSolidBrush_(GetSysColor_(#COLOR_btnface))
          pen=createpen_(#PS_SOLID,0,GetSysColor_(#COLOR_btnface))
          SelectObject_(newdc,membmp)
          SelectObject_(newdc,brush)
          SelectObject_(newdc,pen)
          rectangle_(newdc,0,0,*inf\wdth,*inf\Height)
          rect.RECT
          rect\left=0:rect\right=*inf\wdth:rect\top=0:rect\bottom=*inf\Height
          text.s=Space(255)
          fontid=GetStockObject_(#ANSI_VAR_FONT)	
          SelectObject_(newdc,fontid)
          GetWindowText_(hwnd,text.s,255)
          SetBkColor_(newdc,GetSysColor_(#COLOR_btnface))
          settextalign_(newdc,#TA_CENTER)
          texty=(*inf\Height-14)/2
          textx=(*inf\wdth)/2
          exttextout_(newdc,textx,texty,#ETO_CLIPPED,@rect,text.s,Len(text),0)
          DrawEdge_(newdc,@rect,#EDGE_RAISED,#BF_TOP|#BF_LEFT|#BF_RIGHT|#BF_BOTTOM)
          BitBlt_(dc,0,0,*inf\wdth,*inf\Height,newdc,0,0,#SRCCOPY)
          ReleaseDC_(hwnd,dc)
          DeleteDC_(newdc)
          DeleteObject_(membmp)
        Case #PB_HoverImage
          buttondown=0
          dc=GetDC_(hwnd)
          newdc=CreateCompatibleDC_(dc)
          brush=CreateSolidBrush_(GetSysColor_(#COLOR_btnface))
          pen=createpen_(#PS_SOLID,0,GetSysColor_(#COLOR_btnface))
          membmp=*inf\image 
          SelectObject_(newdc,brush)
          SelectObject_(newdc,pen)
          rectangle_(newdc,0,0,*inf\wdth,*inf\Height)
          rect.RECT
          rect\left=0:rect\right=*inf\wdth:rect\top=0:rect\bottom=*inf\Height
          SelectObject_(newdc,membmp)  
          BitBlt_(dc,0,0,*inf\wdth,*inf\Height,newdc,0,0,#SRCCOPY)
          DrawEdge_(dc,@rect,#EDGE_RAISED,#BF_TOP|#BF_LEFT|#BF_RIGHT|#BF_BOTTOM)
          ReleaseDC_(hwnd,dc)
          DeleteDC_(newdc)
          ProcedureReturn 0
      EndSelect 
  EndSelect
  ProcedureReturn CallWindowProc_(GetProp_(hwnd,"OldProc"),hwnd,msg,wParam,lParam)
EndProcedure 
Procedure HoverButton(number.l,x,Y,Width,Height,text.s,type,image.l=0)
  Select type
    Case #PB_HoverImage
      If number=#PB_Any
        number=#PB_Any
        returnval=ImageGadget(number,x,Y,Width,Height,0)
        hwnd=GadgetID(returnval)
        GadgetToolTip(returnval,text)
      Else
        number=number
        returnval=ImageGadget(number,x,Y,Width,Height,0)
        hwnd=returnval
        GadgetToolTip(number,text)
      EndIf 
      txt.s=text
      SetWindowText_(hwnd,txt)
      SetProp_(hwnd,"OldProc",SetWindowLong_(hwnd,#GWL_WNDPROC,@callback()))
      *info.hover=HeapAlloc_(GetProcessHeap_(), 0, SizeOf(hover))
      *info\wdth=Width 
      *info\Height=Height
      *info\image=image 
      *info\type=type
      re=SetProp_(hwnd,"windowinfo",*info)
    Case #PB_HoverText
      If number=#PB_Any
        number=#PB_Any
        returnval=ImageGadget(number,x,Y,Width,Height,0)
        hwnd=GadgetID(returnval)
      Else
        number=number
        returnval=ImageGadget(number,x,Y,Width,Height,0)
        hwnd=returnval
      EndIf 
      txt.s=text
      SetWindowText_(hwnd,txt)
      SetProp_(hwnd,"OldProc",SetWindowLong_(hwnd,#GWL_WNDPROC,@callback()))
      *info.hover=HeapAlloc_(GetProcessHeap_(), 0, SizeOf(hover))
      *info\wdth=Width 
      *info\Height=Height
      *info\type=type
      re=SetProp_(hwnd,"windowinfo",*info)
      InvalidateRect_(hwnd,0,0)
  EndSelect 
  ProcedureReturn returnval
EndProcedure 
If OpenWindow(0, 289, 91, 472, 507, "hoverbutton",#PB_Window_SystemMenu | #PB_Window_TitleBar)
  If CreateGadgetList(WindowID(0))
    HoverButton(10,20,20,40,40,"test", #PB_HoverText)
  EndIf 
EndIf 
Repeat
  Event=WaitWindowEvent()
  Select Event 
    Case  #PB_Event_Menu
      Select EventMenu()
        
      EndSelect
    Case  #PB_Event_Gadget
      Select EventGadget()
        
          
      EndSelect
      
  EndSelect
  
Until Event = #PB_Event_CloseWindow
 
End 
Code: Select all
!.WHILE status != dwPassedOut
! Invoke AllocateDrink, dwBeerAmount
!MOV Mug, Beer
!Invoke Drink, Mug, dwBeerAmount
!.endw