Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SB_VERT и отсечение (WinAPI only)


ProgRAMmer Dimonych ©   (2011-05-04 01:04:00) 

Доброго времени суток.

Пишу контрол наподобие ListView. Регистрирую собственный оконный класс, обрабатываю все необходимые сообщения. При создании принудительно добавляю к стилям окна флаги WS_HSCROLL or WS_VSCROLL. Прокрутка содержимого уже реализована.

Проблема в том, что когда вертикальная полоса прокрутки (SB_VERT) прячется (содержимое умещается в окно по высоте), на её месте остаётся прямоугольная область цвета COLOR_BTNFACE, рисовать поверх которой не удаётся.

На скриншоте - окно с этим же контролом, но вся отрисовка заменена таким кодом:

GetClientRect(hWnd, @R);
FillRect(hDC, @R, hbrBackBrush);


http://s45.radikal.ru/i109/1105/5b/7f86011fb097.jpg

Доп. информация:
1. Обработка WM_NCHITTEST с подменой HTVSCROLL на HTCLIENT ничего не дала.
2. GetClientRect возвращает прямоугольник на 4 пикселя меньше реальной ширины контрола. Т.е., похоже, область спрятанной полосы прокрутки просто отсекается при рисовании. Но SelectClipRgn(hDC, 0) проблемы не решает.


Игорь Шевченко   (2011-05-04 01:32:00) [1]


> Прокрутка содержимого уже реализована.


SetScrollInfo там не используется, часом ? Со словом SIF_DISABLENOSCROLL ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо