go语言的ui库比较少,walk相对来说比较易用,经过几个哥们的指点,摸索出以下方法来满足自己的需要。有walk经验的朋友可以一起交流。
walk增加禁止最大化、最小化、固定窗体大小
修改 lxn/walk/mainwindow.go
1> 增加全局变量
var winStyle uint32 = win.WS_OVERLAPPEDWINDOW
2> 修改 NewMainWindow() 函数下的 win.WS_OVERLAPPEDWINDOW 为 winStyle
func NewMainWindow() (*MainWindow, error) {
mw := new(MainWindow)
if err := InitWindow(
mw,
nil,
mainWindowWindowClass,
winStyle, // WS_MINIMIZEBOX = 0X00020000 WS_MAXIMIZEBOX = 0X00010000 WS_SIZEBOX = 0X00040000
win.WS_EX_CONTROLPARENT); err != nil {
return nil, err
}
3> Men()方法前增加以下三个方法:
func (mw *MainWindow) SetMinimizeBox(minbox bool) {
if !minbox {
winStyle = winStyle - win.WS_MINIMIZEBOX
}
}
func (mw *MainWindow) SetMaximizeBox(maxbox bool) {
if !maxbox {
winStyle = winStyle - win.WS_MAXIMIZEBOX
}
}
func (mw *MainWindow) SetFixedSize(fixed bool) {
if fixed {
winStyle = winStyle - win.WS_SIZEBOX
}
}
4> 使用方法:在Crete Mainwindow之前使用
mw := new(MyMainWindow)
mw.SetMaximizeBox(false)
mw.SetMinimizeBox(true)
mw.SetFixedSize(true)
![gui.png](http://studygolang.qiniudn.com/151001/418c2b64f02a2a322fe43bc37d58e8a7.png)
附上实例:
<iframe style="border:1px solid" src="https://wide.b3log.org/playground/a266e4637cb1b42945003e8ae6fefa61.go?embed=true" width="99%" height="600"></iframe>
win8.1下golang+sdl2.0环境搭建 ==>http://studygolang.com/articles/1572
Go语言+SDL写小游戏----HelloWorld ==>http://www.gn00.com/t-260361-1-1.html
#4
更多评论
Walk 和 Window 绑定, 个人不喜欢。
跨平台的会更好,TK 很经典呀, 或者我宁愿用 SDL ,
以上两者都有 golang 版本,我都测试过都可用。
#2