本文整理汇总了Golang中github.com/AllenDang/w32.TRACKMOUSEEVENT.CbSize方法的典型用法代码示例。如果您正苦于以下问题:Golang TRACKMOUSEEVENT.CbSize方法的具体用法?Golang TRACKMOUSEEVENT.CbSize怎么用?Golang TRACKMOUSEEVENT.CbSize使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/AllenDang/w32.TRACKMOUSEEVENT
的用法示例。
在下文中一共展示了TRACKMOUSEEVENT.CbSize方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: internalTrackMouseEvent
func internalTrackMouseEvent(hwnd w32.HWND) {
var tme w32.TRACKMOUSEEVENT
tme.CbSize = uint(unsafe.Sizeof(tme))
tme.DwFlags = w32.TME_LEAVE
tme.HwndTrack = hwnd
tme.DwHoverTime = w32.HOVER_DEFAULT
w32.TrackMouseEvent(&tme)
}
示例2: WndProc
func WndProc(hwnd w32.HWND, msg uint32, wparam, lparam uintptr) uintptr {
wnd := GetMsgHandler(hwnd)
if wnd == nil {
return uintptr(w32.DefWindowProc(hwnd, msg, wparam, lparam))
}
var rc uintptr
switch msg {
case w32.WM_ACTIVATE:
if wparam&0xffff != 0 {
/* This window has just been granted focus, so flag our internal
** key state as stale. We can't simply refresh our state because
** win32's GetKeyboardState isn't always accurate at this point
** in the event stream. */
wnd.keysStale = true
}
rc = w32.DefWindowProc(hwnd, msg, wparam, lparam)
case w32.WM_SHOWWINDOW:
w32.SetFocus(hwnd)
wnd.restoreCursor()
case w32.WM_LBUTTONDOWN, w32.WM_RBUTTONDOWN, w32.WM_MBUTTONDOWN:
wnd.button = wnd.button | buttonForDetail(msg)
var bpe wde.MouseDownEvent
bpe.Which = buttonForDetail(msg)
bpe.Where.X = int(lparam) & 0xFFFF
bpe.Where.Y = int(lparam>>16) & 0xFFFF
wnd.lastX = bpe.Where.X
wnd.lastY = bpe.Where.Y
wnd.events <- bpe
case w32.WM_LBUTTONUP, w32.WM_RBUTTONUP, w32.WM_MBUTTONUP:
wnd.button = wnd.button & ^buttonForDetail(msg)
var bpe wde.MouseUpEvent
bpe.Which = buttonForDetail(msg)
bpe.Where.X = int(lparam) & 0xFFFF
bpe.Where.Y = int(lparam>>16) & 0xFFFF
wnd.lastX = bpe.Where.X
wnd.lastY = bpe.Where.Y
wnd.events <- bpe
case w32.WM_MOUSEWHEEL:
var me wde.MouseEvent
screenX := int(lparam) & 0xFFFF
screenY := int(lparam>>16) & 0xFFFF
me.Where.X, me.Where.Y, _ = w32.ScreenToClient(wnd.hwnd, screenX, screenY)
button := wde.WheelDownButton
delta := int16((wparam >> 16) & 0xFFFF)
if delta > 0 {
button = wde.WheelUpButton
}
wnd.lastX = me.Where.X
wnd.lastX = me.Where.Y
wnd.events <- wde.MouseDownEvent{me, button}
wnd.events <- wde.MouseUpEvent{me, button}
case w32.WM_MOUSEMOVE:
var mme wde.MouseMovedEvent
mme.Where.X = int(lparam) & 0xFFFF
mme.Where.Y = int(lparam>>16) & 0xFFFF
if wnd.lastX != wnd.noX {
mme.From.X = int(wnd.lastX)
mme.From.Y = int(wnd.lastY)
} else {
mme.From.X = mme.Where.X
mme.From.Y = mme.Where.Y
}
wnd.lastX = mme.Where.X
wnd.lastY = mme.Where.Y
if !wnd.trackMouse {
var tme w32.TRACKMOUSEEVENT
tme.CbSize = uint32(unsafe.Sizeof(tme))
tme.DwFlags = w32.TME_LEAVE
tme.HwndTrack = hwnd
tme.DwHoverTime = w32.HOVER_DEFAULT
w32.TrackMouseEvent(&tme)
wnd.trackMouse = true
wnd.restoreCursor()
wnd.events <- wde.MouseEnteredEvent(mme)
} else {
if wnd.button == 0 {
wnd.events <- mme
} else {
var mde wde.MouseDraggedEvent
mde.MouseMovedEvent = mme
mde.Which = wnd.button
wnd.events <- mde
}
}
case w32.WM_MOUSELEAVE:
wnd.trackMouse = false
var wee wde.MouseExitedEvent
// TODO: get real position
wee.Where.Y = wnd.lastX
wee.Where.X = wnd.lastY
wnd.events <- wee
//.........这里部分代码省略.........
示例3: WndProc
func WndProc(hwnd w32.HWND, msg uint, wparam, lparam uintptr) uintptr {
wnd := GetMsgHandler(hwnd)
if wnd == nil {
return uintptr(w32.DefWindowProc(hwnd, msg, wparam, lparam))
}
var rc uintptr
switch msg {
case w32.WM_LBUTTONDOWN, w32.WM_RBUTTONDOWN, w32.WM_MBUTTONDOWN:
wnd.button = wnd.button | buttonForDetail(msg)
var bpe wde.MouseDownEvent
bpe.Which = buttonForDetail(msg)
bpe.Where.X = int(lparam) & 0xFFFF
bpe.Where.Y = int(lparam>>16) & 0xFFFF
wnd.lastX = bpe.Where.X
wnd.lastY = bpe.Where.Y
wnd.events <- bpe
case w32.WM_LBUTTONUP, w32.WM_RBUTTONUP, w32.WM_MBUTTONUP:
wnd.button = wnd.button & ^buttonForDetail(msg)
var bpe wde.MouseUpEvent
bpe.Which = buttonForDetail(msg)
bpe.Where.X = int(lparam) & 0xFFFF
bpe.Where.Y = int(lparam>>16) & 0xFFFF
wnd.lastX = bpe.Where.X
wnd.lastY = bpe.Where.Y
wnd.events <- bpe
case w32.WM_MOUSEMOVE:
var mme wde.MouseMovedEvent
mme.Where.X = int(lparam) & 0xFFFF
mme.Where.Y = int(lparam>>16) & 0xFFFF
if wnd.lastX != wnd.noX {
mme.From.X = int(wnd.lastX)
mme.From.Y = int(wnd.lastY)
} else {
mme.From.X = mme.Where.X
mme.From.Y = mme.Where.Y
}
wnd.lastX = mme.Where.X
wnd.lastY = mme.Where.Y
if !wnd.trackMouse {
var tme w32.TRACKMOUSEEVENT
tme.CbSize = uint(unsafe.Sizeof(tme))
tme.DwFlags = w32.TME_LEAVE
tme.HwndTrack = hwnd
tme.DwHoverTime = w32.HOVER_DEFAULT
w32.TrackMouseEvent(&tme)
wnd.trackMouse = true
wnd.events <- wde.MouseEnteredEvent(mme)
} else {
if wnd.button == 0 {
wnd.events <- mme
} else {
var mde wde.MouseDraggedEvent
mde.MouseMovedEvent = mme
mde.Which = wnd.button
wnd.events <- mde
}
}
case w32.WM_MOUSELEAVE:
wnd.trackMouse = false
var wee wde.MouseExitedEvent
// TODO: get real position
wee.Where.Y = wnd.lastX
wee.Where.X = wnd.lastY
wnd.events <- wee
case w32.WM_KEYDOWN:
// TODO: letter
ke := wde.KeyEvent{
fmt.Sprintf("%d", wparam),
}
wnd.events <- wde.KeyDownEvent(ke)
kpe := wde.KeyTypedEvent{
KeyEvent: ke,
}
wnd.events <- kpe
case w32.WM_KEYUP:
// TODO: letter
wnd.events <- wde.KeyUpEvent{
fmt.Sprintf("%d", wparam),
}
case w32.WM_SIZE:
width := int(lparam) & 0xFFFF
height := int(lparam>>16) & 0xFFFF
wnd.buffer = NewDIB(image.Rect(0, 0, width, height))
wnd.events <- wde.ResizeEvent{width, height}
rc = w32.DefWindowProc(hwnd, msg, wparam, lparam)
case w32.WM_PAINT:
var paint w32.PAINTSTRUCT
hdc := w32.BeginPaint(hwnd, &paint)
wnd.blitImage(hdc)
w32.EndPaint(hwnd, &paint)
//.........这里部分代码省略.........
示例4: WndProc
func WndProc(hwnd w32.HWND, msg uint, wparam, lparam uintptr) uintptr {
wnd := GetMsgHandler(hwnd)
if wnd == nil {
return uintptr(w32.DefWindowProc(hwnd, msg, wparam, lparam))
}
var rc uintptr
switch msg {
case w32.WM_SHOWWINDOW:
w32.SetFocus(hwnd)
case w32.WM_LBUTTONDOWN, w32.WM_RBUTTONDOWN, w32.WM_MBUTTONDOWN:
wnd.button = wnd.button | buttonForDetail(msg)
var bpe wde.MouseDownEvent
bpe.Which = buttonForDetail(msg)
bpe.Where.X = int(lparam) & 0xFFFF
bpe.Where.Y = int(lparam>>16) & 0xFFFF
wnd.lastX = bpe.Where.X
wnd.lastY = bpe.Where.Y
wnd.events <- bpe
case w32.WM_LBUTTONUP, w32.WM_RBUTTONUP, w32.WM_MBUTTONUP:
wnd.button = wnd.button & ^buttonForDetail(msg)
var bpe wde.MouseUpEvent
bpe.Which = buttonForDetail(msg)
bpe.Where.X = int(lparam) & 0xFFFF
bpe.Where.Y = int(lparam>>16) & 0xFFFF
wnd.lastX = bpe.Where.X
wnd.lastY = bpe.Where.Y
wnd.events <- bpe
case w32.WM_MOUSEMOVE:
var mme wde.MouseMovedEvent
mme.Where.X = int(lparam) & 0xFFFF
mme.Where.Y = int(lparam>>16) & 0xFFFF
if wnd.lastX != wnd.noX {
mme.From.X = int(wnd.lastX)
mme.From.Y = int(wnd.lastY)
} else {
mme.From.X = mme.Where.X
mme.From.Y = mme.Where.Y
}
wnd.lastX = mme.Where.X
wnd.lastY = mme.Where.Y
if !wnd.trackMouse {
var tme w32.TRACKMOUSEEVENT
tme.CbSize = uint(unsafe.Sizeof(tme))
tme.DwFlags = w32.TME_LEAVE
tme.HwndTrack = hwnd
tme.DwHoverTime = w32.HOVER_DEFAULT
w32.TrackMouseEvent(&tme)
wnd.trackMouse = true
wnd.events <- wde.MouseEnteredEvent(mme)
} else {
if wnd.button == 0 {
wnd.events <- mme
} else {
var mde wde.MouseDraggedEvent
mde.MouseMovedEvent = mme
mde.Which = wnd.button
wnd.events <- mde
}
}
case w32.WM_MOUSELEAVE:
wnd.trackMouse = false
var wee wde.MouseExitedEvent
// TODO: get real position
wee.Where.Y = wnd.lastX
wee.Where.X = wnd.lastY
wnd.events <- wee
case w32.WM_SYSKEYDOWN:
keyDown = keyFromVirtualKeyCode(wparam)
keysDown[wde.KeyLeftAlt] = true
keysDown[keyDown] = true
ke := wde.KeyEvent{
keyDown,
}
wnd.events <- wde.KeyDownEvent(ke)
case w32.WM_KEYDOWN:
keyDown = keyFromVirtualKeyCode(wparam)
keysDown[keyDown] = true
ke := wde.KeyEvent{
keyDown,
}
wnd.events <- wde.KeyDownEvent(ke)
case w32.WM_SYSCHAR:
glyph := syscall.UTF16ToString([]uint16{uint16(wparam)})
ke := wde.KeyEvent{
keyDown,
}
kpe := wde.KeyTypedEvent{
ke,
glyph,
wde.ConstructChord(keysDown),
}
wnd.events <- kpe
case w32.WM_CHAR:
//.........这里部分代码省略.........