All build errors resolved. Now to test...
This commit is contained in:
parent
ecb2205e02
commit
73fa611b37
|
@ -1,4 +1,5 @@
|
||||||
// 10 february 2014
|
// 10 february 2014
|
||||||
|
//package ui
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -8,5 +9,5 @@ import (
|
||||||
|
|
||||||
// Menu notifications.
|
// Menu notifications.
|
||||||
const (
|
const (
|
||||||
WM_COMMAND = 0x0111
|
_WM_COMMAND = 0x0111
|
||||||
)
|
)
|
||||||
|
|
|
@ -42,7 +42,7 @@ func stdWndProc(hwnd _HWND, uMsg uint32, wParam _WPARAM, lParam _LPARAM) _LRESUL
|
||||||
uintptr(uMsg),
|
uintptr(uMsg),
|
||||||
uintptr(wParam),
|
uintptr(wParam),
|
||||||
uintptr(lParam))
|
uintptr(lParam))
|
||||||
return LRESULT(r1)
|
return _LRESULT(r1)
|
||||||
}
|
}
|
||||||
panic(fmt.Sprintf("stdWndProc message %d did not return: internal bug in ui library", uMsg))
|
panic(fmt.Sprintf("stdWndProc message %d did not return: internal bug in ui library", uMsg))
|
||||||
}
|
}
|
||||||
|
@ -66,18 +66,21 @@ func registerStdWndClass() (err error) {
|
||||||
_IDC_ARROW = 32512
|
_IDC_ARROW = 32512
|
||||||
)
|
)
|
||||||
|
|
||||||
icon, err := user32.NewProc("LoadIconW").Call(
|
r1, _, err := user32.NewProc("LoadIconW").Call(
|
||||||
uintptr(_NULL),
|
uintptr(_NULL),
|
||||||
uintptr(_IDI_APPLICATION))
|
uintptr(_IDI_APPLICATION))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error getting window icon: %v", err)
|
return fmt.Errorf("error getting window icon: %v", err)
|
||||||
}
|
}
|
||||||
cursor, err := user32.NewProc("LoadCursorW").Call(
|
icon := _HANDLE(r1)
|
||||||
|
|
||||||
|
r1, _, err = user32.NewProc("LoadCursorW").Call(
|
||||||
uintptr(_NULL),
|
uintptr(_NULL),
|
||||||
uintptr(_IDC_ARROW))
|
uintptr(_IDC_ARROW))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error getting window cursor: %v", err)
|
return fmt.Errorf("error getting window cursor: %v", err)
|
||||||
}
|
}
|
||||||
|
cursor := _HANDLE(r1)
|
||||||
|
|
||||||
wc := &_WNDCLASS{
|
wc := &_WNDCLASS{
|
||||||
lpszClassName: syscall.StringToUTF16Ptr(stdWndClass),
|
lpszClassName: syscall.StringToUTF16Ptr(stdWndClass),
|
||||||
|
@ -88,7 +91,7 @@ func registerStdWndClass() (err error) {
|
||||||
hbrBackground: _HBRUSH(_COLOR_BTNFACE + 1),
|
hbrBackground: _HBRUSH(_COLOR_BTNFACE + 1),
|
||||||
}
|
}
|
||||||
|
|
||||||
r1, _, err := user32.NewProc("RegisterClassW").Call(uintptr(unsafe.Pointer(wc)))
|
r1, _, err = user32.NewProc("RegisterClassW").Call(uintptr(unsafe.Pointer(wc)))
|
||||||
if r1 == 0 { // failure
|
if r1 == 0 { // failure
|
||||||
return fmt.Errorf("error registering class: %v", err)
|
return fmt.Errorf("error registering class: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@ func (s *sysData) make() (err error) {
|
||||||
p: []uintptr{
|
p: []uintptr{
|
||||||
uintptr(ct.xstyle),
|
uintptr(ct.xstyle),
|
||||||
ct.name,
|
ct.name,
|
||||||
uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(s.title))),
|
uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(s.text))),
|
||||||
uintptr(ct.style),
|
uintptr(ct.style),
|
||||||
uintptr(_CW_USEDEFAULT), // TODO
|
uintptr(_CW_USEDEFAULT), // TODO
|
||||||
uintptr(_CW_USEDEFAULT),
|
uintptr(_CW_USEDEFAULT),
|
||||||
|
|
|
@ -31,7 +31,7 @@ func ui(initDone chan error) {
|
||||||
go msgloop()
|
go msgloop()
|
||||||
|
|
||||||
for m := range uitask {
|
for m := range uitask {
|
||||||
r1, _, err := m.msg.Call(m.p...)
|
r1, _, err := m.call.Call(m.p...)
|
||||||
m.ret <- uiret{
|
m.ret <- uiret{
|
||||||
ret: r1,
|
ret: r1,
|
||||||
err: err,
|
err: err,
|
||||||
|
@ -47,6 +47,8 @@ var (
|
||||||
_translateMessage = user32.NewProc("TranslateMessage")
|
_translateMessage = user32.NewProc("TranslateMessage")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var getMessageFail = -1 // because Go doesn't let me
|
||||||
|
|
||||||
func msgloop() {
|
func msgloop() {
|
||||||
runtime.LockOSThread()
|
runtime.LockOSThread()
|
||||||
|
|
||||||
|
@ -60,7 +62,7 @@ func msgloop() {
|
||||||
}
|
}
|
||||||
|
|
||||||
for {
|
for {
|
||||||
r1, _, err := getMessage.Call(
|
r1, _, err := _getMessage.Call(
|
||||||
uintptr(unsafe.Pointer(&msg)),
|
uintptr(unsafe.Pointer(&msg)),
|
||||||
uintptr(_NULL),
|
uintptr(_NULL),
|
||||||
uintptr(0),
|
uintptr(0),
|
||||||
|
|
|
@ -24,9 +24,11 @@ type Window struct {
|
||||||
func NewWindow(title string) *Window {
|
func NewWindow(title string) *Window {
|
||||||
return &Window{
|
return &Window{
|
||||||
sysData: &sysData{
|
sysData: &sysData{
|
||||||
|
cSysData: cSysData{
|
||||||
ctype: c_window,
|
ctype: c_window,
|
||||||
text: title,
|
text: title,
|
||||||
},
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue