
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.21] |
![]() |
|
Сообщ.
#1
,
|
|
|
Привет Всем!
Хотел использовать оконный класс STATIC в своих корыстных целях и установить ему горизонтальный ScrollBar. Вызываю ShowScrollBar(...); SetScrollInfo(...); (в нужных для меня местах), а он работать не желает (не реагирует на воздействие мышью). Если установить стиль SS_NOTIFY, то окно начинает принимать (до этого не принимало) WM_HSCROLL идущие от мышки с колесом (что странно), а сам ScrollBar не работает. Помогите разобраться. Спасибо за внимание. |
Сообщ.
#2
,
|
|
|
А что если использовать обычный Edit control, установив ему стиль ReadOnly?
|
Сообщ.
#3
,
|
|
|
C Edit все работает, но тут уже дело принципа!
|
Сообщ.
#4
,
|
|
|
A "Static", имхо, вообще на ввод не реагирует - на то он и статик
|
Сообщ.
#5
,
|
|
|
2YuraN
Я и хочу заставить CStatic реагировать на скроллинг. Ведь CStatic прежде всего CWnd! |
Сообщ.
#6
,
|
|
|
Я хотел сказать, что у статика такая процедура обработки мессаг, что на сообщения
WM_MOUSEFIRST .. WM_MOUSELAST и WM_KEYFIRST .. WM_KEYLAST она просто возвращает 0.. Имхо, тебе нужен SubclassWindow(...), или как там у вас в МФЦ делается перехват ![]() |
Сообщ.
#7
,
|
|
|
2YuraN
ИМХО:SubclassWindow(...) тут непричем! Это делает каркас MFC! Самое интересное, что собщения типа WM_LBUTTONDOWN CStatic принимает и обрабатывает, а вот его ScrollBar нет ![]() |
Сообщ.
#8
,
|
|
|
Перехвати WM_NCHITTEST и разрули по обстоятельствам
т.е if (pt.x > WindowRect.right - GetSystemMetrics(SM_CXVSCROLL)) return HTVSCROLL; return HTCLIENT; |
Сообщ.
#9
,
|
|
|
2migel
Спасибо за идею, но она не работает ![]() Этот статик вообще считает, что скроллы - это его клиентская область, хотя конечно обработка WM_NCHITTEST пытается разубедить, но.... |