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>
有疑问加站长微信联系(非本文作者)