加入收藏 | 设为首页 | 会员中心 | 我要投稿 三明站长网 (https://www.0598zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Go语言MessageBox用法实例

发布时间:2016-12-04 13:13:30 所属栏目:教程 来源:站长网
导读:本文实例讲述了Go语言MessageBox用法。分享给大家供大家参考。具体如下: 复制代码 代码如下:package main import ( nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; "syscall" nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; "unsafe" nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; "fmt" ) func abo

本文实例讲述了Go语言MessageBox用法。分享给大家供大家参考。具体如下:

复制代码 代码如下:package main
import (
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; "syscall"
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; "unsafe"
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; "fmt"
)
func abort(funcname string, err int) {
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; panic(funcname + " failed: " + syscall.Errno(err).Error())
}
var (
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; kernel32, _ = syscall.LoadLibrary("kernel32.dll")
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; getModuleHandle, _ = syscall.GetProcAddress(kernel32, "GetModuleHandleW")
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; user32, _ = syscall.LoadLibrary("user32.dll")
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; messageBox, _ = syscall.GetProcAddress(user32, "MessageBoxW")
)
const (
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; MB_OKnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; = 0x00000000
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; MB_OKCANCELnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; = 0x00000001
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; MB_ABORTRETRYIGNOREnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; = 0x00000002
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; MB_YESNOCANCELnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; = 0x00000003
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; MB_YESNOnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; = 0x00000004
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; MB_RETRYCANCELnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; = 0x00000005
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; MB_CANCELTRYCONTINUEnbsp;nbsp;nbsp;nbsp;nbsp;nbsp; = 0x00000006
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; MB_ICONHANDnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; = 0x00000010
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; MB_ICONQUESTIONnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; = 0x00000020
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; MB_ICONEXCLAMATIONnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; = 0x00000030
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; MB_ICONASTERISKnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; = 0x00000040
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; MB_USERICONnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; = 0x00000080
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; MB_ICONWARNINGnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; = MB_ICONEXCLAMATION
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; MB_ICONERRORnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; = MB_ICONHAND
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; MB_ICONINFORMATIONnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; = MB_ICONASTERISK
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; MB_ICONSTOPnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; = MB_ICONHAND
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; MB_DEFBUTTON1nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; = 0x00000000
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; MB_DEFBUTTON2nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; = 0x00000100
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; MB_DEFBUTTON3nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; = 0x00000200
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; MB_DEFBUTTON4nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; = 0x00000300
)
func MessageBox(caption, text string, style uintptr) (result int) {
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; // var hwnd HWND
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; ret, _, callErr := syscall.Syscall6(uintptr(messageBox), 4,
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 0, // HWND
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(text))), // Text
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(caption))), // Caption
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; style, // type
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 0,
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 0)
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; if callErr != 0 {
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; abort("Call MessageBox", int(callErr))
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; }
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; result = int(ret)
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; return
}
func main() {
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; defer syscall.FreeLibrary(kernel32)
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; defer syscall.FreeLibrary(user32)
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; fmt.Printf("Retern: %dn", MessageBox("Done Title", "This test is Done.", MB_YESNOCANCEL))
}
func init() {
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; fmt.Print("Starting Upn")
}

希望本文所述对大家的Go语言程序设计有所帮助。

(编辑:三明站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!