diff options
Diffstat (limited to 'dialog_windows.go')
| -rw-r--r-- | dialog_windows.go | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/dialog_windows.go b/dialog_windows.go index 21beee0..29124a2 100644 --- a/dialog_windows.go +++ b/dialog_windows.go @@ -79,15 +79,23 @@ var ( func _msgBox(primarytext string, secondarytext string, uType uint32) (result int) { // http://msdn.microsoft.com/en-us/library/windows/desktop/aa511267.aspx says "Use task dialogs whenever appropriate to achieve a consistent look and layout. Task dialogs require Windows Vista® or later, so they aren't suitable for earlier versions of Windows. If you must use a message box, separate the main instruction from the supplemental instruction with two line breaks." text := primarytext + "\n\n" + secondarytext - r1, _, err := _messageBox.Call( - uintptr(_NULL), - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(text))), - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(os.Args[0]))), - uintptr(uType)) - if r1 == 0 { // failure - panic(fmt.Sprintf("error displaying message box to user: %v\nstyle: 0x%08X\ntitle: %q\ntext:\n%s", err, uType, os.Args[0], text)) + ret := make(chan uiret) + defer close(ret) + uitask <- &uimsg{ + call: _messageBox, + p: []uintptr{ + uintptr(_NULL), + uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(text))), + uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(os.Args[0]))), + uintptr(uType), + }, + ret: ret, } - return int(r1) + r := <-ret + if r.ret == 0 { // failure + panic(fmt.Sprintf("error displaying message box to user: %v\nstyle: 0x%08X\ntitle: %q\ntext:\n%s", r.err, uType, os.Args[0], text)) + } + return int(r.ret) } func msgBox(primarytext string, secondarytext string) { |
