Go语言MessageBox示例,gomessagebox示例,package main
文章由Byrx.net分享于2019-03-23 10:03:00
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")}
评论关闭