Go语言MessageBox示例,gomessagebox示例,package main


package mainimport (       "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")}

评论关闭