Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Visual C++/MFC/WTL > Как создать окно со скроллингом? |
Автор: torero 25.5.2006, 02:00 |
Я хочу сделать небольшое окно с прокруткой и вывести в него текст. Если я правильно понимаю, то на основе класса CScrollView можно прокручивать всю клиентскую область окна, а не часть её. Поэтому я ввёл дополнитель- ный класс производный от CWnd, при помощи ClassWizard-a и в нём создаю окно. Но оно не создаётся. Если сделать дочернее окно прямо в классе Вид, то оно получается нормально, но тогда не действуют защищён- ные методы класса CWnd. Если кто делал такие окна, объясните, пожалуйста, основные действия и, если можно, привести основные операторы. |
Автор: AlexPro 25.5.2006, 05:11 |
Как-то все туманно. Я так и не понял, что тебе надо, что ты там создаешь и что не создается. |
Автор: takedo 25.5.2006, 05:36 |
ты создай свое окно на CScrollView. Для того, чтобы ScrollView не прокручивалось, задай ему TotalSize по размеру окна или меньше. |
Автор: torero 25.5.2006, 15:40 |
Что мне надо. Режим MDI. Использую документ/вид. В окне "вида" должна быть таблица с шапкой. Шапка должна стоять на месте, а таблица прокручиваться. Если использовать CScrollView, то шапка уходит за экран. Что тут надо сделать? |
Автор: Earnest 26.5.2006, 04:33 |
Шапка - это что? HeaderCtrl не подходит? Если таблица самодельная, возможны следующие варианты: 1) сделай отдельным контролом: либо используй CHeaderCtrl, либо свой сделай 2) просто исключи "шапку" из клиентской области таблицы (тогда рисовать ее надо на NcPaint) |
Автор: AlexPro 26.5.2006, 13:58 |
CListView не поможет? Там уже все готовое: и таблица, и шапка правильная прокрутка (без шапки). |
Автор: torero 26.5.2006, 14:57 |
Спасибо за ответы. Мне нужно время, чтобы прочитать обо всём этом. Вот только вопрос к Earnest по второму ответу. 1. Как исключить "шапку" из клиентской области? У нас есть метод GetClientRect, но нет SetClientRect. 2. Что такое NcPaint, в MSDN такого нет? |
Автор: torero 3.6.2006, 08:09 |
Сделал заголовок на основе CHeaderCtrl. Основное окно-обычный "вид" на базе CScrollView. Так вот, этот заголовок крутится вместе со всем содержимым окна и уходит за его границы. Правда, здесь много разных флагов, установок и стилей, и я, возможно, не выбрал их нужное сочетание. Подскажи, если есть такие установки. А со связкой CListCtrl-CListView-CHeaderCtrl пока ещё разбираюсь. |
Автор: Bukmop 3.6.2006, 10:22 |
CListView - это именно то, что тебе нужно. |
Автор: Earnest 5.6.2006, 08:19 | ||
Конечно будет, он же в клиентской области находится... Либо помести его в не-клиентскую область, либо сам вмешивайся в процесс скроллинга. Но в общем, Bukmop, прав: разберись лучше с LIstView. Это тоже самое, что CListCtrl, но только обладает свойствами вида. А CHeaderCtrl - это его дочернее окно. Если тебе нужна таблица, самое оно. |
Автор: torero 5.6.2006, 14:49 |
А как Вмешаться в процесс скроллинга? |
Автор: Coocky 5.6.2006, 17:48 |
Что именно надо? Прокручивать LIstView по своему? |
Автор: Earnest 5.6.2006, 18:08 |
Посмотреть код CScrollView, найти подходящие вирт. ф-и и переопределить. Послушай torero, ну что ты упрямишься? Чем тебя List Control не устраивает? |