Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отрисовка gdi со скроллированием 
V
    Опции темы
M_A_Y_
Дата 26.3.2008, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем привет.
У меня есть некий объект (в данном случае N-арное дерево) которое надо нарисовать в диалоговом окне (средствами GDI). Если дерево слишком большое то определенная часть его обрезается и добавляются полосы прокрутки. Внимание вопрос. мне получается надо добавить некий контрол в котором я потом буду рисовать это рас, тоесть будут отсекаться не нужные части.  Как реализовать скролл? Заранее всем спасибо.
PM MAIL   Вверх
korian
Дата 26.3.2008, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



если совсем не мучаться - CTreeCtrl/CTreeView
а если надо помучаться, то CScrollView
PM   Вверх
M_A_Y_
Дата 26.3.2008, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А можно поподробней? тоесть я завожу контрол CTreeCtrl наследую его например от CWnd и уже в нем рисую, а в далоге обработчики скроллеров, и сообщение контролу на перерисовку, так?
PM MAIL   Вверх
Andrey44
Дата 26.3.2008, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

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



Зачем тебе заводить контрол, да еще и наследовать от кого-то?
Если тебе средствами GDI, то просто надо как-то рекурсивно рисовать линии, 
как в дереве.
И смотреть по координатам, если выходим за пределы окна показываем CScrollView.


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
M_A_Y_
Дата 26.3.2008, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



У меня диалог (CDialog)! как предлагаешь "показываем CScrollView"? в том-то и дело что мне в диалоге надо выделить часть, в которой будет рисоватсья дерево
PM MAIL   Вверх
Andrey44
Дата 26.3.2008, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

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



Хорошо, нарисовать на своем диалоге дерево сможешь?
А потом разберемся со скролом smile 


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
M_A_Y_
Дата 26.3.2008, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ну дерево на диалоге я уже нарисовал. тупо сверху, рисуется на OnPaint()
PM MAIL   Вверх
Andrey44
Дата 26.3.2008, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

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



Теперь кидай на свой диалог CScrollBar  smile 


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
M_A_Y_
Дата 26.3.2008, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Как? я завел два скролла  вертикальный и горизонтаьлный
PM MAIL   Вверх
Andrey44
Дата 27.3.2008, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

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



Теперь делай проверку если координаты рисунка выходят за пределы окна показывай или один или другой скролл


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
M_A_Y_
Дата 27.3.2008, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Проверка есть, Как сделать обработчик сообщенйи WM_HSCROLL, WM_HSCROLL?
PM MAIL   Вверх
M_A_Y_
Дата 27.3.2008, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Все, получилось. 

Код

ON_MESSAGE( WM_HSCROLL, OnScroll )

// и функция
LRESULT CDialogClass::OnScroll(WPARAM wParam, LPARAM lParam)
{
// ...
}


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


 




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


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

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