win32 -- add forget-rollover on WM_MOUSELEAVE
parent
99e4607178
commit
784bb15195
|
@ -11,6 +11,7 @@ TUPLE: win hWnd hDC hRC world ;
|
|||
|
||||
SYMBOL: msg-obj
|
||||
SYMBOL: class-name
|
||||
SYMBOL: track-mouse-state
|
||||
|
||||
: random-class-name "Factor" 100000000 random-int unparse append ;
|
||||
|
||||
|
@ -190,7 +191,16 @@ SYMBOL: hWnd
|
|||
prepare-mouse send-button-up ;
|
||||
|
||||
: handle-wm-mousemove ( hWnd uMsg wParam lParam -- )
|
||||
2nip mouse-coordinate swap window move-hand fire-motion ;
|
||||
2nip
|
||||
track-mouse-state get [
|
||||
over "TRACKMOUSEEVENT" <c-object> [ set-TRACKMOUSEEVENT-hwndTrack ] keep
|
||||
"TRACKMOUSEEVENT" c-size over set-TRACKMOUSEEVENT-cbSize
|
||||
TME_LEAVE over set-TRACKMOUSEEVENT-dwFlags
|
||||
0 over set-TRACKMOUSEEVENT-dwHoverTime
|
||||
TrackMouseEvent drop
|
||||
track-mouse-state on
|
||||
] unless
|
||||
mouse-coordinate swap window move-hand fire-motion ;
|
||||
|
||||
: handle-wm-mousewheel ( hWnd uMsg wParam lParam -- )
|
||||
mouse-coordinate >r mouse-wheel nip r> rot window send-wheel ;
|
||||
|
@ -199,6 +209,10 @@ SYMBOL: hWnd
|
|||
#! message sent if windows needs application to stop dragging
|
||||
3drop drop ReleaseCapture drop ;
|
||||
|
||||
: handle-wm-mouseleave ( hWnd uMsg wParam lParam -- )
|
||||
#! message sent if mouse leaves main application
|
||||
3drop drop forget-rollover track-mouse-state off ;
|
||||
|
||||
: 4dup ( a b c d -- a b c d a b c d )
|
||||
>r >r 2dup r> r> 2swap >r >r 2dup r> r> 2swap ;
|
||||
|
||||
|
@ -236,6 +250,7 @@ SYMBOL: hWnd
|
|||
{ [ dup WM_MOUSEMOVE = ] [ drop handle-wm-mousemove 0 ] }
|
||||
{ [ dup WM_MOUSEWHEEL = ] [ drop handle-wm-mousewheel 0 ] }
|
||||
{ [ dup WM_CANCELMODE = ] [ drop handle-wm-cancelmode 0 ] }
|
||||
{ [ dup WM_MOUSELEAVE = ] [ drop handle-wm-mouseleave 0 ] }
|
||||
|
||||
{ [ t ] [ drop DefWindowProc ] }
|
||||
} cond
|
||||
|
|
|
@ -485,3 +485,18 @@ windows? [
|
|||
: MB_ICONQUESTION HEX: 00000020 ;
|
||||
: MB_OK HEX: 00000000 ;
|
||||
|
||||
: TME_HOVER 1 ; inline
|
||||
: TME_LEAVE 2 ; inline
|
||||
: TME_QUERY HEX: 40000000 ; inline
|
||||
: TME_CANCEL HEX: 80000000 ; inline
|
||||
: HOVER_DEFAULT HEX: ffffffff ; inline
|
||||
|
||||
BEGIN-STRUCT: TRACKMOUSEEVENT
|
||||
FIELD: DWORD cbSize
|
||||
FIELD: DWORD dwFlags
|
||||
FIELD: HWND hwndTrack
|
||||
FIELD: DWORD dwHoverTime
|
||||
END-STRUCT
|
||||
|
||||
TYPEDEF: TRACKMOUSEEVENT* LPTRACKMOUSEEVENT
|
||||
|
||||
|
|
|
@ -1309,7 +1309,7 @@ FUNCTION: BOOL ShowWindow ( HWND hWnd, int nCmdShow ) ;
|
|||
! FUNCTION: ToAsciiEx
|
||||
! FUNCTION: ToUnicode
|
||||
! FUNCTION: ToUnicodeEx
|
||||
! FUNCTION: TrackMouseEvent
|
||||
FUNCTION: BOOL TrackMouseEvent ( LPTRACKMOUSEEVENT lpEventTrack ) ;
|
||||
! FUNCTION: TrackPopupMenu
|
||||
! FUNCTION: TrackPopupMenuEx
|
||||
! FUNCTION: TranslateAccelerator
|
||||
|
|
Loading…
Reference in New Issue