summaryrefslogtreecommitdiff
path: root/prefsize_windows.go
diff options
context:
space:
mode:
Diffstat (limited to 'prefsize_windows.go')
-rw-r--r--prefsize_windows.go7
1 files changed, 7 insertions, 0 deletions
diff --git a/prefsize_windows.go b/prefsize_windows.go
index 5a34032..9a16f8d 100644
--- a/prefsize_windows.go
+++ b/prefsize_windows.go
@@ -62,6 +62,7 @@ var stdDlgSizes = [nctypes]dlgunits{
}
var (
+ _selectObject = gdi32.NewProc("SelectObject")
_getTextMetrics = gdi32.NewProc("GetTextMetricsW")
_getWindowDC = user32.NewProc("GetWindowDC")
_releaseDC = user32.NewProc("ReleaseDC")
@@ -79,6 +80,12 @@ func (s *sysData) preferredSize() (width int, height int) {
panic(fmt.Errorf("error getting DC for preferred size calculations: %v", err))
}
dc = _HANDLE(r1)
+ r1, _, err = _selectObject.Call(
+ uintptr(dc),
+ uintptr(unsafe.Pointer(*classTypes[s.ctype].font)))
+ if r1 == 0 { // failure
+ panic(fmt.Errorf("error loading control font into device context for preferred size calculation: %v", err))
+ }
r1, _, err = _getTextMetrics.Call(
uintptr(dc),
uintptr(unsafe.Pointer(&tm)))