Go语言MessageBox用法实例
本文实例讲述了Go语言MessageBox用法。分享给大家供大家参考。具体如下:
packagemain import( "syscall" "unsafe" "fmt" ) funcabort(funcnamestring,errint){ 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 ) funcMessageBox(caption,textstring,styleuintptr)(resultint){ //varhwndHWND 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) ifcallErr!=0{ abort("CallMessageBox",int(callErr)) } result=int(ret) return } funcmain(){ defersyscall.FreeLibrary(kernel32) defersyscall.FreeLibrary(user32) fmt.Printf("Retern:%d\n",MessageBox("DoneTitle","ThistestisDone.",MB_YESNOCANCEL)) } funcinit(){ fmt.Print("StartingUp\n") }
希望本文所述对大家的Go语言程序设计有所帮助。