Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Узнать скролится окно или нет


Автор: ecspertiza 15.11.2013, 14:13
Допустим у меня есть хэндл окна(hwnd) могу ли я узнать скролится оно или нет. Собственно есть ли у него скролл бар или нет, если скролится, то прокрутить его.

Автор: GremlinProg 15.11.2013, 14:40
чтобы определить, есть 2 способа:

1. проверить наличие у окна стилей WS_HSCROLL и WS_VSCROLL
2. вызвать GetScrollInfo и анализировать Page, Max и Min: если Page < ( Max - Min ) - скролл видим

чтобы изменить: SetScrollInfo

Автор: ecspertiza 15.11.2013, 14:43
Спасибо, попробую.

Автор: ecspertiza 15.11.2013, 16:08
Походу возникла другая проблема. Зря я надеялся на то что хэндл у меня есть smile Ситуация такая, есть указатель мышки который постоянно бегает по экрану, когда он попадает на scroll виджет какой либо, его нужно поскролить. Собственно активное окно у меня получить удалось. Вот теперь думаю, что необходимо получить все дочерние элементы найти среди них скролещейся и собственно поскролить его. Но возникает проблема, вот нашел я активное окно, мышь на нем все хорошо. Хочу пробежать по детям, делаю так 

Код


EnumChildWindows(windowHandle, (WNDENUMPROC)EnumWindowsChildProc, NULL);



а ф-ция EnumWindowsChildProc даже не вызывается. С чем это может быть связано ? Пробовал на skype и Microsoft Office Word. 

Автор: Amp 15.11.2013, 16:47
Некоторые современные тулкиты сами полностью отрисовывают все дочерние контролы и не регистрируют их как окна. Пощупай окно с помощью какой-нибудь утилитки типа Spy++.

Автор: ecspertiza 15.11.2013, 17:49
Да, я вкурсе, почти все приложеньки на Qt отрисовывают контролы сами. Но у скайпа точно есть дочерние эллементы, проверил через spy ++

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)