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

Go语言MessageBox用法实例

发布时间:2020-12-16 19:33:45 所属栏目:大数据 来源:网络整理
导读:本篇章节讲解Go语言MessageBox用法。供大家参考研究。具体如下: 复制代码 代码如下: package main import ( "syscall" "unsafe" "fmt" ) func abort(funcname string,err int) { panic(funcname + " failed: " + syscall.Errno(err).Error()) } var

本篇章节讲解Go语言MessageBox用法。分享给大家供大家参考。具体如下:

复制代码 代码如下:
package main
import (
       "syscall"
       "unsafe"
       "fmt"
)
func abort(funcname string,err int) {
       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
)
func MessageBox(caption,text string,style uintptr) (result int) {
       // var hwnd HWND
       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)
       if callErr != 0 {
               abort("Call MessageBox",int(callErr))
       }
       result = int(ret)
       return
}
func main() {
       defer syscall.FreeLibrary(kernel32)
       defer syscall.FreeLibrary(user32)
       fmt.Printf("Retern: %dn",MessageBox("Done Title","This test is Done.",MB_YESNOCANCEL))
}
func init() {
       fmt.Print("Starting Upn")
}

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

(编辑:李大同)

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

    推荐文章
      热点阅读