我的Go语言学习之旅七:创建一个GUI窗体
生活随笔
收集整理的這篇文章主要介紹了
我的Go语言学习之旅七:创建一个GUI窗体
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在上次中,剛剛學過了 ?彈窗效果,這里再接著學習一下如何創建一個窗體。 還是老路子,先上代碼:
package mainimport (
"github.com/lxn/go-winapi"
"syscall"
"strconv"
"unsafe"
)var (
orainWndProc winapi.HWND
)const(
winWidth int32 = 500
winHeight int32 = 300
)func _TEXT(_str string) *uint16{
return syscall.StringToUTF16Ptr(_str)
}func _toString(_n int32) string{
return strconv.Itoa(int(_n))
}func WndProc(hwnd winapi.HWND,msg uint32,wparam uintptr,lparam uintptr) uintptr{
return winapi.CallWindowProc(uintptr(orainWndProc),hwnd,msg,wparam,lparam)
}func main(){
var message winapi.MSG
var hwnd winapi.HWND
var wproc uintptr
hwnd = winapi.CreateWindowEx(
winapi.WS_EX_CLIENTEDGE,
_TEXT("EDIT"),
_TEXT("Hello World"),
winapi.WS_OVERLAPPEDWINDOW,
(winapi.GetSystemMetrics(winapi.SM_CXSCREEN)-winWidth)>>1,
(winapi.GetSystemMetrics(winapi.SM_CYSCREEN)-winHeight)>>1,
winWidth,
winHeight,
0,
0,
winapi.GetModuleHandle(nil),
unsafe.Pointer(nil))
wproc = syscall.NewCallback(WndProc)
orainWndProc = winapi.HWND(winapi.SetWindowLong(hwnd,winapi.GWL_WNDPROC, int32(wproc)))
winapi.ShowWindow(hwnd,winapi.SW_SHOW)
for{
if winapi.GetMessage(&message,0,0,0) == 0{break}
winapi.TranslateMessage(&message)
winapi.DispatchMessage(&message)
}
} 看起來很復雜,細心的話會發現其實這些都是引用了WINDOW提供的API,咱們可以閱讀WIN提供的各API生成我們所需要的界面窗體。 值得一提的是,這里你會看到?_TEXT("EDIT") 這說明創建的是一個編輯框,如果想要創建一個按鈕則改為?_TEXT("BUTTON") 即可。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的我的Go语言学习之旅七:创建一个GUI窗体的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的Go语言学习之旅六:做一个WIN的简
- 下一篇: 我的Go语言学习之旅八:创建一个简单的W