当前位置: 首页 > 编程笔记 >

Go语言MessageBox用法实例

壤驷阳波
2023-03-14
本文向大家介绍Go语言MessageBox用法实例,包括了Go语言MessageBox用法实例的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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: %d\n", MessageBox("Done Title", "This test is Done.", MB_YESNOCANCEL))

}

func init() {

       fmt.Print("Starting Up\n")

}

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

 类似资料:
  • 本文向大家介绍go语言base64用法实例,包括了go语言base64用法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了go语言base64用法。分享给大家供大家参考。具体如下: 这里展示golang base64 的一个小例子,代码如下: 发现了一个更好的办法: 希望本文所述对大家的Go语言程序设计有所帮助。

  • 本文向大家介绍Go语言接口用法实例,包括了Go语言接口用法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Go语言接口用法。分享给大家供大家参考。具体分析如下: 接口类型是由一组方法定义的集合。 接口类型的值可以存放实现这些方法的任何值。 希望本文所述对大家的Go语言程序设计有所帮助。

  • 本文向大家介绍Go语言MD5加密用法实例,包括了Go语言MD5加密用法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Go语言MD5加密用法。分享给大家供大家参考。具体实现方法如下: PS:这里再为大家提供2款MD5加密工具,感兴趣的朋友可以参考一下: MD5在线加密工具: http://tools.jb51.net/password/CreateMD5Password 在线MD5/h

  • 本文向大家介绍go语言里包的用法实例,包括了go语言里包的用法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了go语言里包的用法。分享给大家供大家参考。具体分析如下: 每个 Go 程序都是由包组成的。 程序运行的入口是包 main。 这个程序使用并导入了包 "fmt" 和 "math"。 按照惯例,包名与导入路径的最后一个目录一致。 希望本文所述对大家的Go语言程序设计有所帮助。

  • 本文向大家介绍go语言中range用法,包括了go语言中range用法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了go语言中range用法。分享给大家供大家参考。具体分析如下: range是go语言系统定义的一个函数。 函数的含义是在一个数组中遍历每一个值,返回该值的下标值和此处的实际值。 假如说a[0]=10,则遍历到a[0]的时候返回值为0,10两个值。 下面是一个例子:这个例子是

  • 本文向大家介绍Go语言map字典用法实例分析,包括了Go语言map字典用法实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Go语言map字典用法。分享给大家供大家参考。具体分析如下: 这段代码生成了青岛、济南、烟台三个城市拼音和汉字的对照字典,根据拼音可以输出汉字 希望本文所述对大家的Go语言程序设计有所帮助。