libui/wpf/xtest.go

76 lines
2.3 KiB
Go

// 25 november 2015
package main
import "fmt"
import "runtime"
import "syscall"
import "unsafe"
var libui = syscall.NewLazyDLL("libui.dll")
var uiInit = libui.NewProc("uiInit")
var uiNewWindow = libui.NewProc("uiNewWindow")
var uiWindowOnClosing = libui.NewProc("uiWindowOnClosing")
var uiNewButton = libui.NewProc("uiNewButton")
var uiWindowSetChild = libui.NewProc("uiWindowSetChild")
var uiWindowSetMargined = libui.NewProc("uiWindowSetMargined")
var uiNewVerticalBox = libui.NewProc("uiNewVerticalBox")
var uiBoxAppend = libui.NewProc("uiBoxAppend")
var uiBoxSetPadded = libui.NewProc("uiBoxSetPadded")
var uiNewTab = libui.NewProc("uiNewTab")
var uiTabAppend = libui.NewProc("uiTabAppend")
var uiTabSetMargined = libui.NewProc("uiTabSetMargined")
var uiNewLabel = libui.NewProc("uiNewLabel")
var uiControlShow = libui.NewProc("uiControlShow")
var uiMain = libui.NewProc("uiMain")
var uiQuit = libui.NewProc("uiQuit")
var uiUninit = libui.NewProc("uiUninit")
func onClosing(w uintptr, data uintptr) int32 {
fmt.Println("in closing")
uiQuit.Call()
return 1
}
func main() {
runtime.LockOSThread()
b := make([]byte, 256) // to compensate for uiInitOptions
e, _, _ := uiInit.Call(uintptr(unsafe.Pointer(&b[0])))
if e != 0 { panic(e) }
ss := "Hello from Go"
s := []byte(ss)
w, _, _ := uiNewWindow.Call(
uintptr(unsafe.Pointer(&s[0])),
320, 240, 0)
uiWindowOnClosing.Call(w, syscall.NewCallbackCDecl(onClosing), 0)
tab, _, _ := uiNewTab.Call()
box, _, _ := uiNewVerticalBox.Call()
btn, _, _ := uiNewButton.Call(
uintptr(unsafe.Pointer(&s[0])))
uiBoxAppend.Call(box, btn, 0)
btn, _, _ = uiNewButton.Call(
uintptr(unsafe.Pointer(&s[0])))
uiBoxAppend.Call(box, btn, 1)
btn, _, _ = uiNewLabel.Call(
uintptr(unsafe.Pointer(&s[0])))
uiBoxAppend.Call(box, btn, 0)
btn, _, _ = uiNewButton.Call(
uintptr(unsafe.Pointer(&s[0])))
uiBoxAppend.Call(box, btn, 1)
btn, _, _ = uiNewButton.Call(
uintptr(unsafe.Pointer(&s[0])))
uiBoxAppend.Call(box, btn, 0)
uiWindowSetChild.Call(w, tab)
uiTabAppend.Call(tab,
uintptr(unsafe.Pointer(&s[0])),
box)
uiTabSetMargined.Call(tab, 0, 1)
btn, _, _ = uiNewButton.Call(
uintptr(unsafe.Pointer(&s[0])))
uiTabAppend.Call(tab,
uintptr(unsafe.Pointer(&s[0])),
btn)
uiBoxSetPadded.Call(box, 1)
uiWindowSetMargined.Call(w, 1)
uiControlShow.Call(w)
uiMain.Call(w)
fmt.Println("after main")
uiUninit.Call(w)
fmt.Println("out")
}