![]() |
|
![]() ![]() ![]() |
|
torero |
|
|||
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 177 Регистрация: 1.2.2006 Репутация: нет Всего: нет |
Я хочу сделать небольшое окно с прокруткой и вывести в него текст.
Если я правильно понимаю, то на основе класса CScrollView можно прокручивать всю клиентскую область окна, а не часть её. Поэтому я ввёл дополнитель- ный класс производный от CWnd, при помощи ClassWizard-a и в нём создаю окно. Но оно не создаётся. Если сделать дочернее окно прямо в классе Вид, то оно получается нормально, но тогда не действуют защищён- ные методы класса CWnd. Если кто делал такие окна, объясните, пожалуйста, основные действия и, если можно, привести основные операторы. |
|||
|
||||
AlexPro |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 9.11.2005 Где: Санкт-Петербург Репутация: 3 Всего: 4 |
Как-то все туманно. Я так и не понял, что тебе надо, что ты там создаешь и что не создается.
|
|||
|
||||
takedo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: нет Всего: 3 |
ты создай свое окно на CScrollView. Для того, чтобы ScrollView не прокручивалось, задай ему TotalSize по размеру окна или меньше.
-------------------- я не гольфист - я хоккеист |
|||
|
||||
torero |
|
|||
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 177 Регистрация: 1.2.2006 Репутация: нет Всего: нет |
Что мне надо. Режим MDI. Использую документ/вид. В окне "вида"
должна быть таблица с шапкой. Шапка должна стоять на месте, а таблица прокручиваться. Если использовать CScrollView, то шапка уходит за экран. Что тут надо сделать? |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Шапка - это что? HeaderCtrl не подходит?
Если таблица самодельная, возможны следующие варианты: 1) сделай отдельным контролом: либо используй CHeaderCtrl, либо свой сделай 2) просто исключи "шапку" из клиентской области таблицы (тогда рисовать ее надо на NcPaint) -------------------- ... |
|||
|
||||
AlexPro |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 9.11.2005 Где: Санкт-Петербург Репутация: 3 Всего: 4 |
CListView не поможет? Там уже все готовое: и таблица, и шапка правильная прокрутка (без шапки).
|
|||
|
||||
torero |
|
|||
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 177 Регистрация: 1.2.2006 Репутация: нет Всего: нет |
Спасибо за ответы. Мне нужно время, чтобы прочитать обо всём этом.
Вот только вопрос к Earnest по второму ответу. 1. Как исключить "шапку" из клиентской области? У нас есть метод GetClientRect, но нет SetClientRect. 2. Что такое NcPaint, в MSDN такого нет? |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Нужно обрабатывать сообщение WM_NCCALCSIZE, которое приходит при создании окна, и устанавливать свои размеры клиентской области. WM_NCPAINT Но, в общем, лучше не заморачивайся. Либо используй CListCtrl в качестве таблицы (если не надо редактировать другие колонки кроме первой), либо делай шапку на основе CHeaderCtrl. -------------------- ... |
|||
|
||||
torero |
|
|||
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 177 Регистрация: 1.2.2006 Репутация: нет Всего: нет |
Сделал заголовок на основе CHeaderCtrl. Основное окно-обычный "вид"
на базе CScrollView. Так вот, этот заголовок крутится вместе со всем содержимым окна и уходит за его границы. Правда, здесь много разных флагов, установок и стилей, и я, возможно, не выбрал их нужное сочетание. Подскажи, если есть такие установки. А со связкой CListCtrl-CListView-CHeaderCtrl пока ещё разбираюсь. |
|||
|
||||
Bukmop |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 1.6.2006 Где: Москва Репутация: 2 Всего: 3 |
||||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Конечно будет, он же в клиентской области находится... Либо помести его в не-клиентскую область, либо сам вмешивайся в процесс скроллинга. Но в общем, Bukmop, прав: разберись лучше с LIstView. Это тоже самое, что CListCtrl, но только обладает свойствами вида. А CHeaderCtrl - это его дочернее окно. Если тебе нужна таблица, самое оно. -------------------- ... |
|||
|
||||
torero |
|
|||
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 177 Регистрация: 1.2.2006 Репутация: нет Всего: нет |
А как Вмешаться в процесс скроллинга?
|
|||
|
||||
Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Что именно надо? Прокручивать LIstView по своему? -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Посмотреть код CScrollView, найти подходящие вирт. ф-и и переопределить. Послушай torero, ну что ты упрямишься? Чем тебя List Control не устраивает? -------------------- ... |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |