Go语言MessageBox用法实例
本文实例讲述了Go语言MessageBox用法。分享给大家供大家参考。具体如下:
packagemain
import(
"syscall"
"unsafe"
"fmt"
)
funcabort(funcnamestring,errint){
panic(funcname+"failed:"+syscall.Errno(err).Error())
}
var(
kernel32,_=syscall.LoadLibrary("kernel32.dll")
getModuleHandle,_=syscall.GetProcAddress(kernel32,"GetModuleHandleW")
user32,_=syscall.LoadLibrary("user32.dll")
messageBox,_=syscall.GetProcAddress(user32,"MessageBoxW")
)
const(
MB_OK =0x00000000
MB_OKCANCEL =0x00000001
MB_ABORTRETRYIGNORE =0x00000002
MB_YESNOCANCEL =0x00000003
MB_YESNO =0x00000004
MB_RETRYCANCEL =0x00000005
MB_CANCELTRYCONTINUE =0x00000006
MB_ICONHAND =0x00000010
MB_ICONQUESTION =0x00000020
MB_ICONEXCLAMATION =0x00000030
MB_ICONASTERISK =0x00000040
MB_USERICON =0x00000080
MB_ICONWARNING =MB_ICONEXCLAMATION
MB_ICONERROR =MB_ICONHAND
MB_ICONINFORMATION =MB_ICONASTERISK
MB_ICONSTOP =MB_ICONHAND
MB_DEFBUTTON1 =0x00000000
MB_DEFBUTTON2 =0x00000100
MB_DEFBUTTON3 =0x00000200
MB_DEFBUTTON4 =0x00000300
)
funcMessageBox(caption,textstring,styleuintptr)(resultint){
//varhwndHWND
ret,_,callErr:=syscall.Syscall6(uintptr(messageBox),4,
0,//HWND
uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(text))),//Text
uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(caption))),//Caption
style,//type
0,
0)
ifcallErr!=0{
abort("CallMessageBox",int(callErr))
}
result=int(ret)
return
}
funcmain(){
defersyscall.FreeLibrary(kernel32)
defersyscall.FreeLibrary(user32)
fmt.Printf("Retern:%d\n",MessageBox("DoneTitle","ThistestisDone.",MB_YESNOCANCEL))
}
funcinit(){
fmt.Print("StartingUp\n")
}
希望本文所述对大家的Go语言程序设计有所帮助。