summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--prefsize_windows.go53
1 files changed, 17 insertions, 36 deletions
diff --git a/prefsize_windows.go b/prefsize_windows.go
index 3ccc781..2580b50 100644
--- a/prefsize_windows.go
+++ b/prefsize_windows.go
@@ -66,49 +66,30 @@ println("size of control", s.ctype)
var tm _TEXTMETRICS
var baseX, baseY int
- ret := make(chan uiret)
- defer close(ret)
println("calling getWindowDC")
- uitask <- &uimsg{
- call: _getWindowDC,
- p: []uintptr{uintptr(s.hwnd)},
- ret: ret,
+ r1, _, err := _getWindowDC.Call(uintptr(s.hwnd))
+println("getWindowDC",r1,err)
+ if r1 == 0 { // failure
+ panic(err) // TODO return it instead
}
- r := <-ret
-println("getWindowDC",r.ret,r.err)
- if r.ret == 0 { // failure
- panic(r.err) // TODO return it instead
- }
- dc = _HANDLE(r.ret)
+ dc = _HANDLE(r1)
println("getTextMetrics")
- uitask <- &uimsg{
- call: _getTextMetrics,
- p: []uintptr{
- uintptr(dc),
- uintptr(unsafe.Pointer(&tm)),
- },
- ret: ret,
- }
- r = <-ret
-println("getTextMetrics",r.ret,r.err)
- if r.ret == 0 { // failure
- panic(r.err) // TODO return it instead
+ r1, _, err = _getTextMetrics.Call(
+ uintptr(dc),
+ uintptr(unsafe.Pointer(&tm)))
+println("getTextMetrics",r1,err)
+ if r1 == 0 { // failure
+ panic(err) // TODO return it instead
}
baseX = int(tm.tmAveCharWidth) // TODO not optimal; third reference has better way
baseY = int(tm.tmHeight)
println("releaseDC")
- uitask <- &uimsg{
- call: _releaseDC,
- p: []uintptr{
- uintptr(s.hwnd),
- uintptr(dc),
- },
- ret: ret,
- }
- r = <-ret
-println("releaseDC",r.ret,r.err)
- if r.ret == 0 { // failure
- panic(r.err) // TODO return it instead
+ r1, _, err = _releaseDC.Call(
+ uintptr(s.hwnd),
+ uintptr(dc))
+println("releaseDC",r1,err)
+ if r1 == 0 { // failure
+ panic(err) // TODO return it instead
}
// now that we have the conversion factors...