From b166c0f1146c77a50f3c20d03680602feb79873c Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Mon, 24 Feb 2014 14:16:05 -0500 Subject: [PATCH] And the uitask message fixed was the issue all along. Now it works. --- prefsize_windows.go | 10 +--------- window.go | 8 ++++---- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/prefsize_windows.go b/prefsize_windows.go index 2580b50..9598cb0 100644 --- a/prefsize_windows.go +++ b/prefsize_windows.go @@ -55,39 +55,32 @@ var stdDlgSizes = [nctypes]dlgunits{ } var ( - _getTextMetrics = user32.NewProc("GetTextMetricsW") + _getTextMetrics = gdi32.NewProc("GetTextMetricsW") _getWindowDC = user32.NewProc("GetWindowDC") _releaseDC = user32.NewProc("ReleaseDC") ) func (s *sysData) preferredSize() (width int, height int) { -println("size of control", s.ctype) var dc _HANDLE var tm _TEXTMETRICS var baseX, baseY int -println("calling getWindowDC") r1, _, err := _getWindowDC.Call(uintptr(s.hwnd)) -println("getWindowDC",r1,err) if r1 == 0 { // failure panic(err) // TODO return it instead } dc = _HANDLE(r1) -println("getTextMetrics") 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") r1, _, err = _releaseDC.Call( uintptr(s.hwnd), uintptr(dc)) -println("releaseDC",r1,err) if r1 == 0 { // failure panic(err) // TODO return it instead } @@ -100,7 +93,6 @@ println("releaseDC",r1,err) height = stdDlgSizes[s.ctype].height width = muldiv(width, baseX, 4) // equivalent to right of rect height = muldiv(height, baseY, 8) // equivalent to bottom of rect -println("result:", width, height) return width, height } diff --git a/window.go b/window.go index 175f48a..6a0e6ea 100644 --- a/window.go +++ b/window.go @@ -85,15 +85,15 @@ func (w *Window) Open(control Control) (err error) { return fmt.Errorf("error adding window's control: %v", err) } } + err = w.sysData.setWindowSize(w.initWidth, w.initHeight) + if err != nil { + return fmt.Errorf("error setting window size (in Window.Open()): %v", err) + } // TODO separate showing? err = w.sysData.show() if err != nil { return fmt.Errorf("error showing window (in Window.Open()): %v", err) } - err = w.sysData.setWindowSize(w.initWidth, w.initHeight) - if err != nil { - return fmt.Errorf("error setting window size (in Window.Open()): %v", err) - } w.created = true return nil }