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 ...