MFC добавить полосу прокрутки для члена CWnd - PullRequest
0 голосов
/ 25 декабря 2011


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

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

mywindow.EnableScrollBarCtrl(SB_BOTH,TRUE);

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

mywindow.EnableScrollBar(SB_BOTH,ESB_ENABLE_BOTH);

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

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

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

Ответы [ 3 ]

1 голос
/ 27 декабря 2011

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

0 голосов
/ 28 декабря 2011

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

0 голосов
/ 25 декабря 2011

Должно быть некоторое «переполнение» до того, как полосы прокрутки станут активными.

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

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

...