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


Автор: Darked 14.9.2004, 08:43
Всем привет.
Такая трабла. Создаю SDI Dialog Based, на диалоговую область кидаю скроллбар. событие WM_VSCROLL обрабатываю и прокручиваю clientarea, прблема в том что у меня вместе с окном уезжает и скроллбар. Как сделать чтобы он не двигался?

Автор: mr.DUDA 14.9.2004, 13:56
Если крутишь с пом. ScrollDC - то просто урежь прямоугольник справа; если же в обработчике WM_VSCROLL двигаешь контролы (MoveWindow) - то просто исключи контрол-скроллбар из прокрутки.

Автор: Darked 14.9.2004, 21:25
mr.DUDA
Я двигаю с помощью ScrollWindowEx

Автор: mr.DUDA 15.9.2004, 09:08
Тогда урежь прямоугольники, передаваемые через lpRectScroll и lpRectClip справа на GetSystemMetrics(SM_CXVSCROLL) пикселов.

Автор: Олег М 15.9.2004, 12:17
Цитата(Darked @ 14.9.2004, 11:43)
Всем привет. Такая трабла. Создаю SDI Dialog Based, на диалоговую область кидаю скроллбар. событие WM_VSCROLL обрабатываю и прокручиваю clientarea, прблема в том что у меня вместе с окном уезжает и скроллбар. Как сделать чтобы он не двигался?

Я так понял ты используешь CScrollbarCtrl, который находится в клиентской части диалога. Для обычного окна GetClientRect, который используется в ScrollWindowEx, исключает области, занимаемыми скроллбарами. Тебе же, наверное, надо сделать это вручную. Получи размеры своего скроллбара и уменьши клиентский прямоугольник на нужную величину, и передай его в ScrollWindowEx

Автор: Guest 15.9.2004, 21:58
Спасибо, попробую.

Автор: Darked 15.9.2004, 22:04
Спасибо, попробую.

Олег М
Я использую CScrollBar, пишу на WTL.

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