github.com/as/shiny@v0.8.2/driver/win32/mouse.go (about)

     1  
     2  // +build windows
     3  
     4  package win32
     5  
     6  import (
     7  	"syscall"
     8  
     9  	"github.com/as/shiny/event/mouse"
    10  	"github.com/as/shiny/screen"
    11  )
    12  
    13  type Mouse = mouse.Event
    14  
    15  var MouseEvent func(hwnd syscall.Handle, e mouse.Event)
    16  
    17  type mouseevent struct {
    18  	dir mouse.Direction
    19  	but mouse.Button
    20  }
    21  
    22  func (m *mouseevent) send(hwnd syscall.Handle, msg uint32, wp, lp uintptr) (lResult uintptr) {
    23  	screen.SendMouse(mouse.Event{
    24  		Direction: m.dir,
    25  		Button:    m.but,
    26  		X:         float32(uint16(lp)),
    27  		Y:         float32(uint16(lp >> 16)),
    28  		Modifiers: keyModifiers(),
    29  	})
    30  	return 0
    31  }
    32  func sendMouseEvent(hwnd syscall.Handle, msg uint32, wp, lp uintptr) (lResult uintptr) {
    33  	return mousetab[msg].send(hwnd, msg, wp, lp)
    34  }
    35  
    36  var mousetab = [...]mouseevent{
    37  	WmLbuttondown: {mouse.DirPress, mouse.ButtonLeft},
    38  	WmMbuttondown: {mouse.DirPress, mouse.ButtonMiddle},
    39  	WmRbuttondown: {mouse.DirPress, mouse.ButtonRight},
    40  	WmLbuttonup:   {mouse.DirRelease, mouse.ButtonLeft},
    41  	WmMbuttonup:   {mouse.DirRelease, mouse.ButtonMiddle},
    42  	WmRbuttonup:   {mouse.DirRelease, mouse.ButtonRight},
    43  	WmMousemove:   {},
    44  }