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: 8453
- 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: 8453
- 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: 8453
- 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