OpenWindowedScreen перестаёт работает если ПК отключил в простое монитор. И таймеры тоже.
Подскажите, есть решение какое?
Выводить таймеры из окна, по другому реализовывать?
OpenWindowedScreen и Таймеры останавливаются после простоя Windows
Сообщений 1 страница 4 из 4
Поделиться101.03.2026 19:17:31
Поделиться201.03.2026 20:03:01
OpenWindowedScreen перестаёт работает если ПК отключил в простое монитор. И таймеры тоже.
Если речь про выключение монитора при бездействии пользователя, то нормально работает тестовый пример.
If InitSprite() = 0
MessageRequester("Ошибка", "Не могу открыть экран & среда спрайтов!", 0)
End
EndIf
If OpenWindow(0, 0, 0, 220, 160, "Экран в окне...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ButtonGadget(0, 170, 135, 45, 20, "Quit")
If OpenWindowedScreen(WindowID(0), 0, 0, 160, 160)
CreateSprite(0, 20, 20)
If StartDrawing(SpriteOutput(0))
Box(0, 0, 20, 20, RGB(255, 0, 155))
Box(5, 5, 10, 10, RGB(155, 0, 255))
StopDrawing()
EndIf
Else
MessageRequester("Ошибка", "Не могу открыть оконный экран!", 0)
End
EndIf
EndIf
AddWindowTimer(0, 0, 2000)
direction = 2
Repeat
; Очень важно обрабатывать все события оставшиеся в очереди, в каждом кадре
;
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_Gadget
If EventGadget() = 0
End
EndIf
Case #PB_Event_Timer
MessageBeep_(#MB_ICONERROR)
Case #PB_Event_CloseWindow
End
EndSelect
Until Event = 0
FlipBuffers()
ClearScreen(RGB(0, 0, 0))
DisplaySprite(0, x, x)
x + direction
If x > 140 : direction = -2 : MessageBeep_(#MB_ICONWARNING) : EndIf
If x < 0 : direction = 2 : MessageBeep_(#MB_ICONWARNING) : EndIf
Delay(1)
ForEver
Монитор выключен, а звуки есть.
Поделиться302.03.2026 01:12:43
Привет! Спасибо за скорый ответ!
Я тут в догадках. На одном компьютере c Win7 всё нормально, даже с выходом из сна. А вот на другом с Win10 останавливаются таймеры и что-то с спрайтовым окном при отключении экрана по простою.
Попробую изучить этот феномен. Видео карты не старые (поддерживают спрайты больше разрешения экрана).
Поделиться404.03.2026 00:57:14
Попробуйте в окне настроек компилятора ввести DirectX9 или DirectX11 в поле "Библиотека подсистемы".
Это изменит метод вывода картинки на экран и может будет нормально работать.