Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 22.09.2007
Сообщений: 314
1

Тонкости работы ползунков

12.03.2008, 11:03. Показов 1636. Ответов 2
Метки нет (Все метки)

Я обрабатываю следующие сообщения:
C++
1
2
3
4
5
6
7
if(nSBCode == SB_THUMBPOSITION || nSBCode == SB_THUMBTRACK
        || nSBCode == SB_PAGERIGHT || nSBCode == SB_PAGELEFT 
        || nSBCode == SB_LINELEFT  || nSBCode == SB_LINERIGHT )
    {
        m_text1.Format('%ld',nPos);
        UpdateData(false);
    }
Когда я передвигаю сам ползунок, то m_text1 приобретает нужные мне значения. Когда же я просто кликаю на полосе прокрутки, то ползунок перемещается в это место, но m_text1 ПРЕВРАЩАЕТСЯ В НОЛЬ!
Как сделать так чтобы как в Фотошопе (необязательно принудительно передвигать)?
0

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

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.03.2008, 11:03
Ответы с готовыми решениями:

тонкости работы с реестром
есть програма которая по нажатию кнопки творит вот такое чудо void __fastcall...

Тонкости работы с vararg
Думается, многим будет полезно попробовать разобраться с одной проблемой. С одной стороны не...

"тонкости" работы с поиском Msword
история началась с того, что поля ворда неудобны для массового применения (программной подстановки)...

Тонкости работы многозадачной системы на однопроцессорной машине
Вопросы, появившиеся после прочтения статьи Evg "Потоки vs процессы". Там и системы с...

2
0 / 0 / 0
Регистрация: 22.09.2007
Сообщений: 314
12.03.2008, 14:32  [ТС] 2
Эй парни! Слабо ответить?
0
2 / 2 / 1
Регистрация: 26.08.2014
Сообщений: 27
20.03.2008, 13:37 3
Эй, парень. А слабо хелп почитать ?

nPos

Contains the current scroll-box position if the scroll-bar code is SB_THUMBPOSITION or SB_THUMBTRACK; otherwise not used. Depending on the initial scroll range, nPos may be negative and should be cast to an int if necessary.

Для остальных кодов можешь узнать текущее положение из GetScrollPos или GetScrollInfo и в зависимости от кода nSBCode самому позиционировать на сколько тебе нравиться. Ты же лучше должен знать, какая у тебя страница и т.п.

Вот типичный мой обработчик:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
void CPMTree::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar*) 
{
    SCROLLINFO si;
    si.cbSize = sizeof(si);
    si.fMask  = SIF_ALL;
 
    GetScrollInfo(SB_VERT, &si, si.fMask);
 
    // Если разность между si.nMin и si.nMax больше 32767, 
    // то надо использовать si.nTrackPos, а если меньше, то можно
    // брать и nPos. А можно и всегда брать только nPos - 
    // как нравится.
    if (si.nMax - si.nMin < 32767)
        si.nTrackPos = nPos;
 
    int nOldValue = si.nPos;
 
    switch(nSBCode)
    {
    case SB_LINEUP:
        if (si.nPos > si.nMin + m_nLineHeight)
            si.nPos -= m_nLineHeight;
        else
            si.nPos = si.nMin;
        break;
    case SB_LINEDOWN:
        if (si.nPos < si.nMax - (int)si.nPage + 1 - m_nLineHeight)
            si.nPos += m_nLineHeight;
        else
            si.nPos = si.nMax - (int)si.nPage + 1;
        break;
    case SB_PAGEUP:
        if (si.nPos > si.nMin + (int)si.nPage)
            si.nPos -= si.nPage;
        else
            si.nPos = si.nMin;
        break;
    case SB_PAGEDOWN:
        si.nPos += si.nPage;
 
        if (si.nPos > si.nMax - (int)si.nPage + 1)
            si.nPos = si.nMax - (int)si.nPage + 1;
        break;
    case SB_THUMBTRACK: 
    case SB_THUMBPOSITION:
        si.nPos = si.nTrackPos;
        break;
    }
 
    if (nOldValue != si.nPos)
    {
      CancelMode();
    
        si.fMask = SIF_POS;
        SetScrollInfo(SB_VERT, &si, TRUE);
        Invalidate();
 
        UpdateTip();
    }
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.03.2008, 13:37

Прокрутка ползунков
Вчера возникла проблема. Виндовс 7 профессионал. Проблема заключается в том, что например при...

Синхронизация ползунков textEdit
Здравствуйте. Помогите, пожалуйста. В окне mainWindows нужно синхронизировать ползунки textEdit....

Отображение информации с ползунков
Здравствуйте. Есть ползунки, как сделать рядом с ними поле (окно), чтобы в нем отображалась...

Появление ползунков в StringGrid
Доброго времени суток, форумчани. Нужно ваша помощь в исправлении ошибка. Если не ошибаюсь, то...

Смещение ползунков скролла в контроле Panel
Помогите! Уже несколько дней бьюсь над попыткой сделать адекватный зумм в контроле Panel с его...

Сохранить и считать положение ползунков AcroPDF
Здрасте. Есть компонент AcroDPF, в него выводится n-страничный PDF-документ, который должен после...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.