Как заблокировать изменение размера окна windows в go?

Пользователь

от olen.shanahan , в категории: Golang , 10 месяцев назад

Как заблокировать изменение размера окна windows в go?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от lamar , 9 месяцев назад

@olen.shanahan 

Для того, чтобы заблокировать изменение размера окна Windows в Go, можно использовать функцию SetWindowLongPtr() из пакета "syscall". Эта функция позволяет изменять длинные значения оконных атрибутов и может быть использована для установки стиля окна.


Ниже приведен пример кода, который блокирует изменение размера окна:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
package main

import (
    "fmt"
    "syscall"
    "unsafe"
)

const (
    GWL_STYLE = -16
    WS_THICKFRAME = 0x00040000
)

func main() {
    hwnd := syscall.Handle(0x10002) // hwnd окна, для которого нужно заблокировать изменение размера
    style := syscall.GetWindowLongPtr(hwnd, GWL_STYLE)
    syscall.SetWindowLongPtr(hwnd, GWL_STYLE, style &^ WS_THICKFRAME)
    fmt.Println("Изменение размера окна заблокировано.")
}


В этом примере мы используем константы GWL_STYLE и WS_THICKFRAME для установки стиля окна. Сначала мы получаем текущий стиль окна с помощью функции GetWindowLongPtr(), а затем используем оператор &^ (AND NOT) для удаления флага WS_THICKFRAME из текущего стиля. Наконец, мы используем функцию SetWindowLongPtr(), чтобы установить новый стиль окна без флага WS_THICKFRAME.


Обратите внимание, что в этом примере мы задаем значение hwnd как 0x10002, что означает, что мы хотим заблокировать изменение размера для окна с идентификатором 0x10002. Вы должны заменить это значение на идентификатор вашего окна.