Что нового

Как получить размеры окна прогрессбара (ProgressOn) при разных темах оформления?

gora

Знающий
Сообщения
315
Репутация
19
Как получить размеры окна прогрессбара (ProgressOn) при разных темах оформления? WinGetClientSize выдает неверные размеры.
Разобрался, просьба к модераторам удалить тему.

Извините. :(
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
622
gora
если нашел решение самостоятельно, то не брезгуй выкладывать тут решение, может кому и пригодится ;)
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,716
WinGetClientSize() должен выдавать одинаковые размеры при любой теме оформления. Это те же размеры, что вы задаете в функции GUICreate(). Размеры всего окна (вместе с бордюрами и заголовком) определяются с помощью функции WinGetPos(). Если размеры будут отличаться от фактических, то значит данная тема оформления совсем "левая".
 
Автор
G

gora

Знающий
Сообщения
315
Репутация
19
Kaster
Да я не брезгую, решил так:
Код:
$titlebar = 'Установка .Net Framefork 2.0...4.0+KB+LP'
$lineUp = 'хотфикса'

ProgressOn($titlebar, 'Установка ' & $lineUp, '0 %', 0, @DesktopHeight + 200, 16)
$prgrbar = WinGetPos($titlebar)
$toolbar = WinGetPos("[CLASS:Shell_TrayWnd]")
$poshght = @DesktopHeight - $prgrbar[3]
If $toolbar <> 0 Then $poshght -= $toolbar[3]
ProgressOn($titlebar, 'Установка ' & $lineUp, '0 %', 0, $poshght, 16)

MsgBox (0, "Тест", 'prgrbar=' & $prgrbar[0] & ', ' & $prgrbar[1] & ', ' & $prgrbar[2] & ', ' & $prgrbar[3] & @CRLF & _
'toolbar=' & $toolbar[0] & ', ' & $toolbar[1] & ', ' & $toolbar[2] & ', ' & $toolbar[3])
exit
Задача была поместить прогрессбар в левый нижний угол экрана и прижать его к панели задач, если она есть. На ХР работает, а вот на win7 не очень красиво выглядит. Но будет использоваться только на ХР, по-этому меня устраивает.
 

axlwor

Скриптер
Сообщения
657
Репутация
147
на семерке есть
Код:
SetTaskbarProgress(float percent)
SetTaskbarProgressState(ThumbnailProgressState state)
 
Верх