MFC добавить полосу прокрутки для члена CWnd


У меня есть член класса CWnd имя mywindow
и я хочу добавить к нему полосу прокрутки.
как я могу это сделать?

я пытаюсь уже сделать:

mywindow.EnableScrollBarCtrl(SB_BOTH,TRUE);

он отображает горизонтальную и вертикальную полосы прокрутки,
но я не могу нажимать кнопки или перемещать полосы прокрутки.
я пытаюсь также после первой команды:

mywindow.EnableScrollBar(SB_BOTH,ESB_ENABLE_BOTH);

и это ничего не меняет.

Может кто-нибудь может показать мне простой пример, как добавить полосу прокрутки для этого члена?

большое спасибо,
Tal

3 ответа

Решение

Включение полос прокрутки недостаточно. Вы должны реагировать на сообщения окна WM_HSCROLLа также WM_VSCROLL, С использованием GetScrollInfo Метод, вы получаете положение (значение) полос прокрутки, а затем вы рисуете содержимое окна в соответствии с этой позицией.

Посмотрите некоторые учебники по полосе прокрутки, такие как http://www.codeproject.com/KB/dialog/scrolling_support.aspx. По сути, приведенный выше комментарий dwo - это то, что вам нужно сделать - обработать эти сообщения и установить размер виртуальной клиентской области.

Перед активацией полос прокрутки должно быть некоторое "переполнение".

Напишите некоторые "достаточно длинные" данные в вашем представлении, и полосы прокрутки станут активными (по крайней мере, это было моим опытом давным-давно).

Обычно полосы прокрутки обрабатываются "автоматически" из компонентов MFC, таких как (например) текстовый редактор или представление формы. Т.е. при необходимости будет видно и без явного вызова EnableScrollBarCtrl ...

Другие вопросы по тегам