Войти
ФлеймФорумПрограммирование

WINAPI - вопросы. (3 стр)

Страницы: 1 2 3 4 Следующая »
#30
17:14, 21 июня 2022

Aroch
>з.ы. и кстати про мониторы win + shift + left/right arrows
О, это крутой комбинаций, спасибо )
А если есть еще верхний и нижний моники, тогда win + shift + up/down?

#31
18:07, 21 июня 2022

nes
> А если есть еще верхний и нижний моники, тогда win + shift + up/down?
перебирает в порядке перечисления, а не расположения.

#32
20:52, 23 ноя 2022

Кто-то использовал CancelIoEx ?
У меня постоянно возвращает ERROR_NOT_FOUND, вроде как это означает, что чтение уже завершенно, хотя я пытался по 128Мб читать и это не так быстро.

Тут часть запросов отменяется
https://stackoverflow.com/questions/65048173/cancelio-doesnt-repr… ancelled-i-os

В Windows-samples отмена используется только в DirectoryWatcher, хотя асинхронное чтение/запись там во многих примерах есть.

#33
(Правка: 21:54) 21:42, 23 ноя 2022

/A\
> У меня постоянно возвращает ERROR_NOT_FOUND, вроде как это означает, что чтение уже завершенно, хотя я пытался по 128Мб читать и это не так быстро.

Потому что для тестов файл надо выгонять из дискового кэша через пару вызовов CreateFile(FILE_FLAG_NO_BUFFERING) и CloseHandle

Если данные в дисковом кэше, то вызов ReadFile будет дефакто синхронный.

#34
22:11, 23 ноя 2022

CD
Я создаю новый файл на 2Гб, потом его читаю. С NoBuffering CancelIoEx() стал работать, но запросы все равно удачно отрабатывают, а нагрузка на SSD показывает, что читается именно с диска. Если в памяти кэшируется, то там другое поведение.

#35
22:39, 23 ноя 2022

Нашел вариант - читать файл по WiFi с другого ПК.

Прошло более 9 месяцев
#36
11:29, 6 сен 2023

У меня можно без перезапуска поменять режим монитора между HDR и обычным sRGB, при этом монитор гаснет на пару секунд и приходит сообщение WM_DISPLAYCHANGE.
При этом область рисования в окне ставится неправильно - начинает рисоваться с 0,0 под заголовком окна, а снизу соответственно образуется щель в высоту заголовка. Если перетащить окно, то все исправляется.
В borderless режиме все норм. Работает одинаково на GLFW и моей реализации на WinAPI.

Как заставить окно сразу рисоваться правильно?
Использвать SetWindowExtEx или что-то подобное?

#37
13:44, 6 сен 2023

при этом монитор гаснет на пару секунд и приходит сообщение WM_DISPLAYCHANGE.
При этом область рисования в окне ставится неправильно - начинает рисоваться с 0,0

Гребанный Виндовс.

#38
15:29, 6 сен 2023

Еще странность - приходит сообщение POSITIONCHANGING но не приходит POSITIONCHANGED. Когда перетаскиваю окно приходит оба сообщения и все становится нормально.
Но если на DISPLAYCHANGE вызвать SetWindowPos, то лучше не становится. Попробую чуть позже отправить, когда все остальное отработает, но это уже выглядит как костыль.

#39
17:30, 6 сен 2023

/A\
> Работает одинаково на GLFW и моей реализации на WinAPI
а другие приложения? Блокнот? Пейнт?

#40
18:48, 6 сен 2023

/A\
>Как заставить окно сразу рисоваться правильно?
Меня больше удивляет - как вообще можно рисовать за пределы вьюпорта?
Ты уверен, что корректно обрабатываешь WM_SIZE?

#41
21:00, 6 сен 2023

nes
> Меня больше удивляет - как вообще можно рисовать за пределы вьюпорта?
Не за пределы, у окна сверху заголовок и граница окна, так вот область рисования снизу и справа смещена на размер этой области, как если бы рисование начиналось с самой границы окна. Нижняя часть вообще просвечивает все что под ней.
Позиция мыши обрабатывается корректно и юи неправильно рисует наведение мышью, все с тем же смещением.

> Ты уверен, что корректно обрабатываешь WM_SIZE?
WM_SIZE генерируется на WM_WINDOWPOSCHANGED в DefWindowProc() и он не приходит, так как нет этого сообщения.
И размер окна не меняется, меняется только color space свопчейна, на что монитор переходит в HDR режим, где можно задавать цвета в диапазоне 0 - 125.0

skalogryz
> а другие приложения? Блокнот? Пейнт?
Вроде без изменений, но у них не меняется свопчейн, в отличие от моего приложения.

#42
21:47, 6 сен 2023

В итоге сработал костыль:
на WM_DISPLAYCHANGE я вызываю SetWindowPos и смещаю окно на 1 пиксель, тогда все рисуется где надо. Если не смещать, то ничего не происходит, хотя я добавил флаг SWP_FRAMECHANGED, который должен всякое вызывать.

#43
21:47, 6 сен 2023

/A\
> При этом область рисования в окне ставится неправильно - начинает рисоваться с 0,0 под заголовком окна, а снизу соответственно образуется щель в высоту заголовка. Если перетащить окно, то все исправляется.
/A\
> Вроде без изменений, но у них не меняется свопчейн, в отличие от моего приложения.
а как ты область рисования окна определяешь?

#44
21:54, 6 сен 2023

skalogryz
> а как ты область рисования окна определяешь?
Никак, это делает вулкан в сурфейсе и свопчейне.
Видно что в какой-то момент область рисования съезжает вверх и координаты мыши не совпадают с тем что рисуется.

Страницы: 1 2 3 4 Следующая »
ФлеймФорумПрограммирование