A55555
|
Posted: Sat Sep 06, 2025 00:20 Post subject: |
|
|
Orion9 wrote: | Прикольный глюк. Как оказалось, он связан с функцией выравнивания окна "WinAlign". Может, Loopback глянет, в чём там может быть проблема, а пока можно выравнивать по центру рабочего стола. Для этого нужно заменить строку WinAlign(h_WinShutdown) на WinAlign(h_WinShutdown, 0, DllCall("GetDesktopWindow")). Я не буду скидывать весь код, просто замените фрагмент на новый: |
Спасибо, теперь окно видно нормально и когда TC был свернут в момент исчезновения окна копирования TC.
Но этому окну отсчета напрашивается отображение поверх всех окон.
Loopback wrote: |
По скрину видно, что стоит большое значение масштабирования в системе, при динамическом создании окна это надо учитывать и корректировать его размеры. Чтобы хорошо смотрелось везде, можно примерно такой алгоритм использовать:
Code: |
Func GetDPI()
Local DC = DllCall("GetDC", "int", 0)
Local lpy = DllCall("GetDeviceCaps", "handle", DC, "int", 88) # LOGPIXELSX
DllCall("ReleaseDC", "int", 0, "handle", DC)
Return lpy
EndFunc
Func Scale(nValue)
Static dpi = GetDPI()
Return DllCall("MulDiv", "int", nValue, "int", dpi, "int", 96)
EndFunc
|
Использовать так:
Code: |
h_WinShutdown = DllCall("CreateWindowExW", _
"dword", 0, _
"wstr", "msctls_progress32", _
"wstr", "", _
"dword", 0x10C80000, _
"int", 200, "int", 100, _
"int", Scale(300), "int", Scale(50), _
"handle", AUTORUN_TCHANDLE, _
"handle", 0, "handle", 0, "ptr", 0, _
"handle")
|
|
Loopback
Спасибо. Ваш вариант тоже работает.
Orion9 wrote: | Теперь действительно смотрится лучше. |
Да, ничего не скажешь, наглядно и прикольно прозрачность смотрится, аж захотелось на постоянно добавить окну TC прозрачности немного. |
|