diff options
| author | Pietro Gagliardi <[email protected]> | 2014-03-12 12:21:50 -0400 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2014-03-12 12:21:50 -0400 |
| commit | 46c992f1dca9a76116e2ce3d07f97114bae331bb (patch) | |
| tree | 913212f3fc1ceb3d2c47de9518d134e9b5f1f5ef /dialog_windows.go | |
| parent | dd577010caeb3530a91565c933e75e52a5ed9b50 (diff) | |
Made message boxes run on uitask on Windows; adjusted some related TODOs.
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) { |
