Loopback
|
Posted: Fri Sep 05, 2025 19:31 Post subject: |
|
|
Orion9 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")
|
Кстати, добавлю макрос для DPI в sysinfo. Тогда GetDPI будет не нужна.
Orion9 wrote: | как затенить окно |
В каком смысле затенить?
Orion9 wrote: | Может, Loopback глянет, в чём там может быть проблема |
Да тут и смотреть нечего, очевидно что проблема в том, что для свернутого окна возвращаются такие координаты, что при расчёте окно улетает за пределы экрана. Надо добавить проверку в WinAlign и для свёрнутого базового окна ничего не делать.
A55555 wrote: | Каким параметром время отображения подсказки устанавливается? |
ShowHint("Монитор выключения запущен, ожидание завершения копирования", 0, 0, 1000, 1)
Время задержки в мс. |
|