45 lines
803 B
Go
45 lines
803 B
Go
// Copyright 2019 The Walk Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// +build windows,!walk_use_cgo
|
|
|
|
package walk
|
|
|
|
import (
|
|
"unsafe"
|
|
|
|
"github.com/lxn/win"
|
|
)
|
|
|
|
func (fb *FormBase) mainLoop() int {
|
|
msg := (*win.MSG)(unsafe.Pointer(win.GlobalAlloc(0, unsafe.Sizeof(win.MSG{}))))
|
|
defer win.GlobalFree(win.HGLOBAL(unsafe.Pointer(msg)))
|
|
|
|
for fb.hWnd != 0 {
|
|
switch win.GetMessage(msg, 0, 0, 0) {
|
|
case 0:
|
|
return int(msg.WParam)
|
|
|
|
case -1:
|
|
return -1
|
|
}
|
|
|
|
switch msg.Message {
|
|
case win.WM_KEYDOWN:
|
|
if fb.handleKeyDown(msg) {
|
|
continue
|
|
}
|
|
}
|
|
|
|
if !win.IsDialogMessage(fb.hWnd, msg) {
|
|
win.TranslateMessage(msg)
|
|
win.DispatchMessage(msg)
|
|
}
|
|
|
|
fb.group.RunSynchronized()
|
|
}
|
|
|
|
return 0
|
|
}
|