Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Scrollbar и StaticText

10K
27 марта 2007 года
nuhop
50 / / 24.03.2007
Я создаю форму, а в ней StaticText. Проблема в том, что выводимый текст не помещается в StaticText по вертикали. Правда, что к StaticText нельзя "прикрепить" Scrollbar? Если нельзя, то как это сделать без StaticText?
320
27 марта 2007 года
m_Valery
1.0K / / 08.01.2007
Цитата: nuhop
Я создаю форму, а в ней StaticText. Проблема в том, что выводимый текст не помещается в StaticText по вертикали. Правда, что к StaticText нельзя "прикрепить" Scrollbar? Если нельзя, то как это сделать без StaticText?


Да,можно,вот только зачем ? Текстовый статик предназначен в основном для заголовков,а выводить в нем большой текст...Не знаю,по-моему лучше использовать CEdit.Но могу показать для статика.
1.Вытаскиваешь из Toolbox Static,меняешь его ID в Properties на
IDC_STATIC1.
2.Вытаскиваешь оттуда же Horizontal Scroll Bar
2.Добавляешь в класс диалога переменные:

 
Код:
int min,max; // переменные для контроля границ прокрутки
  CStatic m_static;// контрол переменная CStatic
  CString str;// контрол переменная для статика Value
  CScrollBar m_scroll;//контрол переменная для для скролла

4.Устанавливаешь обработчик кнопки ОК и добавляешь в класс диалога
ф-ию в Messages OnHScroll.
5.В конструкторе диалога устанавливаешь
 
Код:
...
   min=20;// значение для минимума
   max=200;// значение для максимума
...

6.В OnInitDialog дописываешь
 
Код:
...
   // Начальная инициализация полосы прокрутки
    m_scroll.SetScrollRange(min,max);
...

7.В обработчике кнопки Ок OnBnClickedOk()
 
Код:
{
             str = "111111\r\n222222\r\n333333\r\n4444444\r\n5555555\r\n666666";
    UpdateData(false);
}
Записываем в статик текст.
8.В ф-ии OnHScroll
Код:
...::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
    // Получаем текущую позицию
    int cur=pScrollBar->GetScrollPos();
    switch(nSBCode){
       case SB_LINELEFT:
           cur-1>min?cur-=1:cur=min;
           break;
       case SB_LINERIGHT:
           cur+1<max?cur+=1:cur=max;    
           break;
       case SB_THUMBPOSITION:
            cur=nPos;
       case SB_THUMBTRACK:
            cur=nPos;
    }
    WINDOWPLACEMENT y;
    // Определение оконных координат окна
    m_static.GetWindowPlacement(&y);
    m_static.MoveWindow(y.rcNormalPosition.left,y.rcNormalPosition.top,cur,cur);      
    pScrollBar->SetScrollPos(cur);
    UpdateWindow();
    Invalidate();
    CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
Теперь растягивай и смотри что будет:)
10K
31 марта 2007 года
nuhop
50 / / 24.03.2007
Спасибо. Я попробовал также и с CEdit - действительно проще получается. Забавно, что перевод строки будет работать с "\r\n" и никак иначе.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог