Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
petrovich1
0 / 0 / 0
Регистрация: 22.09.2007
Сообщений: 314
#1

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

12.03.2008, 11:03. Просмотров 921. Ответов 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 ПРЕВРАЩАЕТСЯ В НОЛЬ!
Как сделать так чтобы как в Фотошопе (необязательно принудительно передвигать)?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2008, 11:03     Тонкости работы ползунков
Посмотрите здесь:

Тонкости быстрой сортировки - C++
Излазил кучу мест в сети. Нашел массу этих алгоритмов, но на поверку практически каждый не совсем работающий. Представляется, что в этой...

Тонкости типов данных - C++
Господа, подскажите, пожалуйста, в чем моя ошибка, не вижу, хоть убейся. Программа простейшая, но результат выдается в конце один и тот же,...

Низкоуровневые тонкости программирования на С++ - C++
Здравствуйте. Хотел бы узнать у опытных программистов, где можно найти литературу по более продвинутым вопросам программирования с С++,...

Объясните некоторые тонкости указателей - C++
Всем добрый вечер. Вот так выглядит сам код: //Программа объявляет указатель на массив типа double, затем выделяет память, заполняет и...

Прошу пояснить тонкости данного кода - C++
#include <math.h> <...> class CAccumulator { private: float value; static int lastId; int myId; public: CAccumulator( const...

Нюансы синтаксиса и тонкости использования указателей и массивов - C++
Доброго времени суток! Никак не могу понять, почему один вариант кода работает: #include <iostream> #include <stdlib.h> ...

Какие книги стоит прочитать начинающему программисту С++ , чтобы понять все тонкости программирования? - C++
Чтобы узнать основные принципы всех парадигм программирования, чего стоит и не стоит делать, да и вообще, какие, по вашему мнению, книги...

Тонкости кода: wchar_t* FilterFiles = L"cool"; - C++
Я в функции создаю указатель на строку и потом этот указатель передаю в объект (поле объекта): wchar_t* FilterFiles = L"cool"; ...

тонкости работы с реестром - C++ Builder
есть програма которая по нажатию кнопки творит вот такое чудо void __fastcall TForm1::Button2Click(TObject *Sender) { ...

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

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

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
petrovich1
0 / 0 / 0
Регистрация: 22.09.2007
Сообщений: 314
12.03.2008, 14:32  [ТС]     Тонкости работы ползунков #2
Эй парни! Слабо ответить?
Bacek
Сообщений: n/a
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();
    }
}
Yandex
Объявления
20.03.2008, 13:37     Тонкости работы ползунков
Ответ Создать тему
Опции темы

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