app/internal/windows,app: [Windows] generalize windows.GetPointerLong

We're about to use it to store the Go window cgo.Handle.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2022-03-02 18:14:45 +01:00
parent b9e8a177f0
commit 95365d5878
2 changed files with 11 additions and 11 deletions
+7 -7
View File
@@ -99,7 +99,7 @@ const (
CW_USEDEFAULT = -2147483648 CW_USEDEFAULT = -2147483648
GWL_STYLE = ^(uint32(16) - 1) // -16 GWL_STYLE = ^(uintptr(16) - 1) // -16
GCS_COMPSTR = 0x0008 GCS_COMPSTR = 0x0008
GCS_COMPREADSTR = 0x0001 GCS_COMPREADSTR = 0x0001
@@ -525,11 +525,11 @@ func GetMonitorInfo(hwnd syscall.Handle) MonitorInfo {
return mi return mi
} }
func GetWindowLong(hwnd syscall.Handle) (style uintptr) { func GetWindowLong(hwnd syscall.Handle, index uintptr) (val uintptr) {
if runtime.GOARCH == "386" { if runtime.GOARCH == "386" {
style, _, _ = _GetWindowLong32.Call(uintptr(hwnd), uintptr(GWL_STYLE)) val, _, _ = _GetWindowLong32.Call(uintptr(hwnd), index)
} else { } else {
style, _, _ = _GetWindowLong.Call(uintptr(hwnd), uintptr(GWL_STYLE)) val, _, _ = _GetWindowLong.Call(uintptr(hwnd), index)
} }
return return
} }
@@ -582,11 +582,11 @@ func ImmSetCandidateWindow(imc syscall.Handle, x, y int) {
_ImmSetCandidateWindow.Call(uintptr(imc), uintptr(unsafe.Pointer(&f))) _ImmSetCandidateWindow.Call(uintptr(imc), uintptr(unsafe.Pointer(&f)))
} }
func SetWindowLong(hwnd syscall.Handle, idx uint32, style uintptr) { func SetWindowLong(hwnd syscall.Handle, idx uintptr, style uintptr) {
if runtime.GOARCH == "386" { if runtime.GOARCH == "386" {
_SetWindowLong32.Call(uintptr(hwnd), uintptr(idx), style) _SetWindowLong32.Call(uintptr(hwnd), idx, style)
} else { } else {
_SetWindowLong.Call(uintptr(hwnd), uintptr(idx), style) _SetWindowLong.Call(uintptr(hwnd), idx, style)
} }
} }
+4 -4
View File
@@ -198,7 +198,7 @@ func (w *window) update() {
// Check the window mode. // Check the window mode.
mode := w.config.Mode mode := w.config.Mode
p := windows.GetWindowPlacement(w.hwnd) p := windows.GetWindowPlacement(w.hwnd)
style := windows.GetWindowLong(w.hwnd) style := windows.GetWindowLong(w.hwnd, windows.GWL_STYLE)
if style&windows.WS_OVERLAPPEDWINDOW == 0 { if style&windows.WS_OVERLAPPEDWINDOW == 0 {
mode = Fullscreen mode = Fullscreen
mi := windows.GetMonitorInfo(w.hwnd).Monitor mi := windows.GetMonitorInfo(w.hwnd).Monitor
@@ -603,7 +603,7 @@ func (w *window) Configure(options []Option) {
case Maximized: case Maximized:
// Set window style. // Set window style.
style := windows.GetWindowLong(w.hwnd) & (^uintptr(windows.WS_MAXIMIZE)) style := windows.GetWindowLong(w.hwnd, windows.GWL_STYLE) & (^uintptr(windows.WS_MAXIMIZE))
windows.SetWindowLong(w.hwnd, windows.GWL_STYLE, style|windows.WS_OVERLAPPEDWINDOW) windows.SetWindowLong(w.hwnd, windows.GWL_STYLE, style|windows.WS_OVERLAPPEDWINDOW)
mi := windows.GetMonitorInfo(w.hwnd).Monitor mi := windows.GetMonitorInfo(w.hwnd).Monitor
w.config.Size = image.Point{X: int(mi.Right - mi.Left), Y: int(mi.Bottom - mi.Top)} w.config.Size = image.Point{X: int(mi.Right - mi.Left), Y: int(mi.Bottom - mi.Top)}
@@ -612,7 +612,7 @@ func (w *window) Configure(options []Option) {
case Windowed: case Windowed:
windows.SetWindowText(w.hwnd, w.config.Title) windows.SetWindowText(w.hwnd, w.config.Title)
// Set window style. // Set window style.
style := windows.GetWindowLong(w.hwnd) & (^uintptr(windows.WS_MAXIMIZE)) style := windows.GetWindowLong(w.hwnd, windows.GWL_STYLE) & (^uintptr(windows.WS_MAXIMIZE))
windows.SetWindowLong(w.hwnd, windows.GWL_STYLE, style|windows.WS_OVERLAPPEDWINDOW) windows.SetWindowLong(w.hwnd, windows.GWL_STYLE, style|windows.WS_OVERLAPPEDWINDOW)
// Get target for client areaa size. // Get target for client areaa size.
width := int32(w.config.Size.X) width := int32(w.config.Size.X)
@@ -645,7 +645,7 @@ func (w *window) Configure(options []Option) {
windows.ShowWindow(w.hwnd, windows.SW_SHOWNORMAL) windows.ShowWindow(w.hwnd, windows.SW_SHOWNORMAL)
case Fullscreen: case Fullscreen:
style := windows.GetWindowLong(w.hwnd) style := windows.GetWindowLong(w.hwnd, windows.GWL_STYLE)
windows.SetWindowLong(w.hwnd, windows.GWL_STYLE, style&^windows.WS_OVERLAPPEDWINDOW) windows.SetWindowLong(w.hwnd, windows.GWL_STYLE, style&^windows.WS_OVERLAPPEDWINDOW)
mi := windows.GetMonitorInfo(w.hwnd) mi := windows.GetMonitorInfo(w.hwnd)
w.config.Size = image.Point{X: int(mi.Monitor.Right - mi.Monitor.Left), Y: int(mi.Monitor.Bottom - mi.Monitor.Top)} w.config.Size = image.Point{X: int(mi.Monitor.Right - mi.Monitor.Left), Y: int(mi.Monitor.Bottom - mi.Monitor.Top)}