github.com/secoba/wails/v2@v2.6.4/internal/frontend/desktop/windows/winc/mousecontrol.go (about) 1 //go:build windows 2 3 /* 4 * Copyright (C) 2019 The Winc Authors. All Rights Reserved. 5 */ 6 7 package winc 8 9 import ( 10 "github.com/secoba/wails/v2/internal/frontend/desktop/windows/winc/w32" 11 ) 12 13 // MouseControl used for creating custom controls that need mouse hover or mouse leave events. 14 type MouseControl struct { 15 ControlBase 16 isMouseLeft bool 17 } 18 19 func (cc *MouseControl) Init(parent Controller, className string, exStyle, style uint) { 20 RegClassOnlyOnce(className) 21 cc.hwnd = CreateWindow(className, parent, exStyle, style) 22 cc.parent = parent 23 RegMsgHandler(cc) 24 25 cc.isMouseLeft = true 26 cc.SetFont(DefaultFont) 27 } 28 29 func (cc *MouseControl) WndProc(msg uint32, wparam, lparam uintptr) uintptr { 30 sender := GetMsgHandler(cc.hwnd) 31 switch msg { 32 case w32.WM_CREATE: 33 internalTrackMouseEvent(cc.hwnd) 34 cc.onCreate.Fire(NewEvent(sender, nil)) 35 case w32.WM_CLOSE: 36 cc.onClose.Fire(NewEvent(sender, nil)) 37 case w32.WM_MOUSEMOVE: 38 //if cc.isMouseLeft { 39 40 cc.onMouseHover.Fire(NewEvent(sender, nil)) 41 //internalTrackMouseEvent(cc.hwnd) 42 cc.isMouseLeft = false 43 44 //} 45 case w32.WM_MOUSELEAVE: 46 cc.onMouseLeave.Fire(NewEvent(sender, nil)) 47 cc.isMouseLeft = true 48 } 49 return w32.DefWindowProc(cc.hwnd, msg, wparam, lparam) 50 }