Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как создать окно со скроллингом? 
:(
    Опции темы
torero
Дата 25.5.2006, 02:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 177
Регистрация: 1.2.2006

Репутация: нет
Всего: нет



  Я хочу сделать небольшое окно с прокруткой и вывести в него текст.
 Если я правильно понимаю, то на основе класса CScrollView можно прокручивать
 всю клиентскую область окна, а не часть её. Поэтому я ввёл дополнитель-
 ный класс производный от CWnd, при помощи ClassWizard-a и в нём 
 создаю окно. Но оно не создаётся. Если сделать дочернее окно прямо в
 классе Вид, то оно получается нормально, но тогда не действуют защищён-
 ные методы класса CWnd.
  Если кто делал такие окна, объясните, пожалуйста, основные действия
 и, если можно, привести основные операторы. 
 
PM MAIL   Вверх
AlexPro
Дата 25.5.2006, 05:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 9.11.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 4



Как-то все туманно. Я так и не понял, что тебе надо, что ты там создаешь и что не создается. 
PM MAIL   Вверх
takedo
Дата 25.5.2006, 05:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 1.6.2005

Репутация: нет
Всего: 3



ты создай свое окно на CScrollView. Для того, чтобы ScrollView не прокручивалось, задай ему TotalSize по размеру окна или меньше. 


--------------------
я не гольфист - я хоккеист
PM MAIL   Вверх
torero
Дата 25.5.2006, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 177
Регистрация: 1.2.2006

Репутация: нет
Всего: нет



   Что мне надо. Режим MDI. Использую документ/вид. В окне "вида"
  должна быть таблица с шапкой. Шапка должна стоять на месте, а таблица
  прокручиваться. Если использовать CScrollView, то шапка уходит за экран.
  Что тут надо сделать? 
PM MAIL   Вверх
Earnest
Дата 26.5.2006, 04:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Шапка - это что? HeaderCtrl не подходит?
Если таблица самодельная, возможны следующие варианты:
1) сделай отдельным контролом: либо используй CHeaderCtrl, либо свой сделай
2) просто исключи "шапку" из клиентской области таблицы (тогда рисовать ее надо на NcPaint)
 


--------------------
...
PM   Вверх
AlexPro
Дата 26.5.2006, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 9.11.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 4



CListView не поможет? Там уже все готовое: и таблица, и шапка правильная прокрутка (без шапки). 
PM MAIL   Вверх
torero
Дата 26.5.2006, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 177
Регистрация: 1.2.2006

Репутация: нет
Всего: нет



   Спасибо за ответы. Мне нужно время, чтобы прочитать обо всём этом.
  Вот только вопрос к Earnest по второму ответу.
  1. Как исключить "шапку" из клиентской области? У нас есть метод
     GetClientRect, но нет SetClientRect.
  2. Что такое NcPaint, в MSDN такого нет? 
PM MAIL   Вверх
Earnest
Дата 26.5.2006, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(torero @  26.5.2006,  15:57 Найти цитируемый пост)
1. Как исключить "шапку" из клиентской области? У нас есть метод
     GetClientRect, но нет SetClientRect.

Нужно обрабатывать сообщение WM_NCCALCSIZE, которое приходит при создании окна, и устанавливать свои размеры клиентской области.

Цитата(torero @  26.5.2006,  15:57 Найти цитируемый пост)
 2. Что такое NcPaint, в MSDN такого нет?  

WM_NCPAINT

Но, в общем, лучше не заморачивайся. Либо используй CListCtrl в качестве таблицы (если не надо редактировать другие колонки кроме первой), либо делай шапку на основе CHeaderCtrl. 


--------------------
...
PM   Вверх
torero
Дата 3.6.2006, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 177
Регистрация: 1.2.2006

Репутация: нет
Всего: нет



  Сделал заголовок на основе CHeaderCtrl. Основное окно-обычный "вид"
  на базе CScrollView. Так вот, этот заголовок крутится вместе со всем
  содержимым окна и уходит за его границы. Правда, здесь много разных
  флагов, установок и стилей, и я, возможно, не выбрал их нужное сочетание.
  Подскажи, если есть такие установки.
   А со связкой CListCtrl-CListView-CHeaderCtrl пока ещё разбираюсь. 
PM MAIL   Вверх
Bukmop
Дата 3.6.2006, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 1.6.2006
Где: Москва

Репутация: 2
Всего: 3



Цитата(torero @  3.6.2006,  08:09 Найти цитируемый пост)
А со связкой CListCtrl-CListView-CHeaderCtrl пока ещё разбираюсь.

CListView - это именно то, что тебе нужно.
  

Это сообщение отредактировал(а) Bukmop - 3.6.2006, 10:22
PM MAIL   Вверх
Earnest
Дата 5.6.2006, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(torero @  3.6.2006,  09:09 Найти цитируемый пост)
 Сделал заголовок на основе CHeaderCtrl. Основное окно-обычный "вид"
  на базе CScrollView. Так вот, этот заголовок крутится вместе со всем
  содержимым окна и уходит за его границы

Конечно будет, он же в клиентской области находится...
Либо помести его в не-клиентскую область, либо сам вмешивайся в процесс скроллинга.

Но в общем, Bukmop, прав: разберись лучше с LIstView. Это тоже самое, что CListCtrl, но только обладает свойствами вида. А CHeaderCtrl - это его дочернее окно. Если тебе нужна таблица, самое оно. 


--------------------
...
PM   Вверх
torero
Дата 5.6.2006, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 177
Регистрация: 1.2.2006

Репутация: нет
Всего: нет



    А как Вмешаться в процесс скроллинга? 
PM MAIL   Вверх
Coocky
Дата 5.6.2006, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



Цитата(torero @  5.6.2006,  14:49 Найти цитируемый пост)
А как Вмешаться в процесс скроллинга?

Что именно надо? Прокручивать LIstView по своему?
 


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Earnest
Дата 5.6.2006, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(torero @  5.6.2006,  15:49 Найти цитируемый пост)
   А как Вмешаться в процесс скроллинга?  

Посмотреть код CScrollView, найти подходящие вирт. ф-и и переопределить.

Послушай torero, ну что ты упрямишься? Чем тебя List Control не устраивает?
 


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0832 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.