WS_EX_TOPMOST, похоже, ничего не делаетPython

Программы на Python
Ответить
Anonymous
 WS_EX_TOPMOST, похоже, ничего не делает

Сообщение Anonymous »

У меня есть подкласс окна pyglet, который получил это в своей функции __init__. Все флаги работают, кроме WS_EX_TOPMOST.
hwnd = self._hwnd # type: ignore

GWL_EXSTYLE = -20
WS_EX_LAYERED = 0x80000
WS_EX_TOOLWINDOW = 0x00000080
WS_EX_TOPMOST = 0x00000008
LWA_COLORCODE = 0x1

ex_style = windll.user32.GetWindowLongW(hwnd, GWL_EXSTYLE)
windll.user32.SetWindowLongW(hwnd, GWL_EXSTYLE, ex_style | WS_EX_LAYERED | WS_EX_TOOLWINDOW | WS_EX_TOPMOST)
windll.user32.SetLayeredWindowAttributes(hwnd, 0, 255, LWA_COLORCODE)
windll.user32.SetWindowPos(hwnd, -1, 0, 0, 0, 0, 0x0001 | 0x0002)

Полный код __init__ — это полный беспорядок, но я тоже приведу его, чтобы избежать недоразумений.
def __init__(self, *args, **kwargs):

# Overriding something for beauty's sake
kwargs['style'] = 'borderless'
kwargs['width'] = bg_img.width
kwargs['height'] = screen.height
super().__init__(*args, **kwargs)
glClearColor(0, 0, 0, 0)

# Doing some unusual low-level gibberish to explain Windows how our pyglet app should behave and look like
hwnd = self._hwnd # type: ignore
GWL_EXSTYLE = -20
WS_EX_LAYERED = 0x80000
WS_EX_TOOLWINDOW = 0x00000080
WS_EX_TOPMOST = 0x00000008
LWA_COLORCODE = 0x1
ex_style = windll.user32.GetWindowLongW(hwnd, GWL_EXSTYLE)
windll.user32.SetWindowLongW(hwnd, GWL_EXSTYLE, ex_style | WS_EX_LAYERED | WS_EX_TOOLWINDOW | WS_EX_TOPMOST)
windll.user32.SetLayeredWindowAttributes(hwnd, 0, 255, LWA_COLORCODE)
windll.user32.SetWindowPos(hwnd, -1, 0, 0, 0, 0, 0x0001 | 0x0002)

self.set_location(screen.width - self.width, 0)

self.shown = True

self.cursors = {
'default': self.get_system_mouse_cursor(Window.CURSOR_DEFAULT),
'hand': self.get_system_mouse_cursor(Window.CURSOR_HAND)
}

# omelette w/ bacon
self.batch = Batch()
self.bg = Sprite(bg_img, batch = self.batch)


Подробнее здесь: https://stackoverflow.com/questions/793 ... es-nothing
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»