Re[2]: Как определить
От: ghostik Россия http://www.deepseo.ru/
Дата: 26.08.04 08:13
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Привет!


PD>Проверить в его стиляж наличие WS_V(H)SCROLL

PD>if (GetWindowLong(hWnd,GWL_STYLE) & WS_VSCROLL)
PD> // есть вертикальный скроллбар

Это только один из возможных вариантов т.е покрывает только часть задачи
Целиком задачу вообще невозможно решить
это даже не говоря о том что есть ownerdraw тулбары

Есть только частные случаи например
Когда хэндл указывает на окошко IE
пройдет вариант что то вроде этого

CString strWindowClassName;
GetClassName(pWnd->GetSafeHwnd() , strWindowClassName.GetBuffer(MAX_PATH), MAX_PATH);
strWindowClassName.ReleaseBuffer();

if ( 0 == strWindowClassName.Compare(_T("Internet Explorer_Server")))
{
     IsScrollWindow =   TRUE; // возможно есть вертикальный скроллбар.
}

что бы быть 100% уверенным что есть скроллбар нужно получить IHTMLDocument2 и хорошенько пропарсить там разобрать на фреймы и тд...
тут тебе поможет How To Get IHTMLDocument2 from a HWND
а так же Measuring Element Dimension and Location
если нужно будет управлять этим окном то опят же через IHTMLDocument2



Т.е уже получается 2 частных случая
Когда управление окном происходит через CScrollBar практичесски невозможно сказать каким окном он управляет

В принципе есть интерестные попытки определит есть ли скролл у окна но они тоже работают не во всех случаях.. (если нужно могу поведать)
Исспользую совокупность всех средст возможно и можно получить более — менее хороший результат
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.