lxn / walk

A Windows GUI toolkit for the Go Programming Language
Other
6.84k stars 884 forks source link

[BUG] New version display window error #597

Open suoyukii opened 5 years ago

suoyukii commented 5 years ago
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x20 pc=0x5ac794]

goroutine 1 [running, locked to thread]:
github.com/lxn/walk.CreateLayoutItemsForContainerWithContext(0x92e1a0, 0xc000186800, 0xc000184dc0, 0xa0802, 0x0)
        C:/Users/12526/go/src/github.com/lxn/walk/layout.go:61 +0x504
github.com/lxn/walk.CreateLayoutItemsForContainer(0x92e1a0, 0xc000186800, 0x0, 0x338)
        C:/Users/12526/go/src/github.com/lxn/walk/layout.go:49 +0xbb
github.com/lxn/walk.(*FormBase).startLayout(0xc000186800, 0x70818)
        C:/Users/12526/go/src/github.com/lxn/walk/form.go:726 +0x11a
github.com/lxn/walk.(*FormBase).WndProc(0xc000186800, 0x70818, 0x47, 0x0, 0x124fdd0, 0x0)
        C:/Users/12526/go/src/github.com/lxn/walk/form.go:818 +0x7bc
github.com/lxn/walk.(*MainWindow).WndProc(0xc000186800, 0x70818, 0x47, 0x0, 0x124fdd0, 0x28)
        C:/Users/12526/go/src/github.com/lxn/walk/mainwindow.go:233 +0x76
github.com/lxn/walk.defaultWndProc(0x70818, 0x47, 0x0, 0x124fdd0, 0x0)
        C:/Users/12526/go/src/github.com/lxn/walk/window.go:1989 +0xd7
syscall.Syscall(0x7ffe6b063d60, 0x2, 0x70818, 0x8, 0x0, 0x0, 0x0, 0x0)
        c:/go/src/runtime/syscall_windows.go:184 +0xea
github.com/lxn/win.ShowWindow(0x70818, 0x8, 0xa0802)
        C:/Users/12526/go/src/github.com/lxn/win/user32.go:3186 +0x6a
github.com/lxn/walk.setWindowVisible(...)
        C:/Users/12526/go/src/github.com/lxn/walk/window.go:1249
github.com/lxn/walk.(*WindowBase).SetVisible(0xc000186800, 0x43b1b01)
        C:/Users/12526/go/src/github.com/lxn/walk/window.go:1213 +0x72
github.com/lxn/walk.(*MainWindow).SetVisible(0xc000186800, 0x92b801)
        C:/Users/12526/go/src/github.com/lxn/walk/mainwindow.go:141 +0x41
github.com/lxn/walk.(*FormBase).Show(0xc000186800)
        C:/Users/12526/go/src/github.com/lxn/walk/form.go:603 +0xde
suoyukii commented 5 years ago

@lxn

suoyukii commented 5 years ago
package main

import (
    "syscall"

    "github.com/lxn/walk"
)

func GetSystemMetrics(nIndex int) int {
    ret, _, _ := syscall.NewLazyDLL(`User32.dll`).NewProc(`GetSystemMetrics`).Call(uintptr(nIndex))
    return int(ret)
}

func main() {
    window, _ := walk.NewMainWindow()
    window.SetWidth(400)
    window.SetHeight(400)
    window.SetX((GetSystemMetrics(0) - window.Width()) / 2)
    window.SetY((GetSystemMetrics(1) - window.Height()) / 2)
    window.Show()
    window.Run()
}
lxn commented 5 years ago

Thanks for reporting. This should be fixed by https://github.com/lxn/walk/commit/a8335f0ed5c41e27807bb706c61583ecefdcd2a5.

suoyukii commented 5 years ago
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x20 pc=0x5acd10]

goroutine 1 [running, locked to thread]:
github.com/lxn/walk.CreateLayoutItemsForContainerWithContext(0x92fa60, 0xc00017e800, 0xc000045a90, 0x8062c, 0x0)
        C:/Users/12526/go/src/github.com/lxn/walk/layout.go:65 +0x520
github.com/lxn/walk.CreateLayoutItemsForContainer(0x92fa60, 0xc00017e800, 0x0, 0x338)
        C:/Users/12526/go/src/github.com/lxn/walk/layout.go:49 +0xbb
github.com/lxn/walk.(*FormBase).startLayout(0xc00017e800, 0x90624)
        C:/Users/12526/go/src/github.com/lxn/walk/form.go:726 +0x11a
github.com/lxn/walk.(*FormBase).WndProc(0xc00017e800, 0x90624, 0x47, 0x0, 0x124fdd0, 0x0)
        C:/Users/12526/go/src/github.com/lxn/walk/form.go:818 +0x7bc
github.com/lxn/walk.(*MainWindow).WndProc(0xc00017e800, 0x90624, 0x47, 0x0, 0x124fdd0, 0x28)
        C:/Users/12526/go/src/github.com/lxn/walk/mainwindow.go:233 +0x76
github.com/lxn/walk.defaultWndProc(0x90624, 0x47, 0x0, 0x124fdd0, 0x0)
        C:/Users/12526/go/src/github.com/lxn/walk/window.go:1989 +0xd7
syscall.Syscall(0x7fff26ee3d60, 0x2, 0x90624, 0x8, 0x0, 0x0, 0x0, 0x0)
        c:/go/src/runtime/syscall_windows.go:184 +0xea
github.com/lxn/win.ShowWindow(0x90624, 0x8, 0x8062c)
        C:/Users/12526/go/src/github.com/lxn/win/user32.go:3186 +0x6a
github.com/lxn/walk.setWindowVisible(...)
        C:/Users/12526/go/src/github.com/lxn/walk/window.go:1249
github.com/lxn/walk.(*WindowBase).SetVisible(0xc00017e800, 0x12a6101)
        C:/Users/12526/go/src/github.com/lxn/walk/window.go:1213 +0x72
github.com/lxn/walk.(*MainWindow).SetVisible(0xc00017e800, 0x92d001)
        C:/Users/12526/go/src/github.com/lxn/walk/mainwindow.go:141 +0x41
github.com/lxn/walk.(*FormBase).Show(0xc00017e800)
        C:/Users/12526/go/src/github.com/lxn/walk/form.go:603 +0xde
suoyukii commented 5 years ago
suoyukii commented 5 years ago

What if I prefer to use my own Layout? I don't really want to use the layout set up by the system.

lxn commented 5 years ago

Not sure if this is still possible. You may have to implement walk.Layout and walk.ContainerLayoutItem. Or wait until I restore support for custom layouts.