Поиск:

Ответ в темуСоздание новой темы Создание опроса
> обработка сообщений от 2 бегунков (slider) 
V
    Опции темы
Lido4ka
Дата 25.11.2007, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Помогите, плз, обработать сообщения от 2 бегунков. Есть 2 бегунка и соответствующие им текстовые поля. Необходимо, чтобы при перемещении бегунка при помощи мыши или клавиш <- и -> на клавиатуре в соответствующем текстовом поле тображалось значение (оно должно меняться уже в процессе перемещения бегунка). Какие методы и как надо использовать? Переменные и диапазон значений бегунка заданы.
PM MAIL   Вверх
Greeen
Дата 25.11.2007, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Под ползунком видимо имеется в виду CSliderCtrl. Чтобы обработать изменение значения ползунка, нужно родителем ловить WM_HSCROLL, если он горизонтальный, и WM_VSCROLL - если вертикальный.


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
Lido4ka
Дата 25.11.2007, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Это  я прекрасно понимаю, но можно поподробнее? Про метод WM_HSCROLL я знаю, но не знаю, как использовать его для 2 бегунков. Кроме того, возможно обобщение задачи на n бегунков.
PM MAIL   Вверх
Greeen
Дата 25.11.2007, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

afx_msg void OnHScroll(
   UINT nSBCode,
   UINT nPos,
   CScrollBar* pScrollBar 
);

pScrollBar - указатель на твой "бегунок". Преобразовываешь его к указателю на CSliderCtrl и все, делай что хочешь со своим бегунком.


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
Lido4ka
Дата 26.11.2007, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



 У меня проблемы с двумя бегунками. Этот метод вызывается при перемещении любого бегунка, а как мне выделить, скажем, позиции обоих бегунков? Например, я изменяю одним бегунком освещение лампы на столе, а другим бегунком в этом же диалоговом окне освещение люстры на потолке.
PM MAIL   Вверх
Andrey44
Дата 26.11.2007, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



У обоих обработай сообщение NM_RELEASEDECAPTURE
Код

void CMyDlg::OnNMReleasedcaptureSlider1(NMHDR *pNMHDR, LRESULT *pResult)
{
    // TODO: Add your control notification handler code here
    *pResult = 0;
int pos = slider1.GetPos();//pos - позиция слайдера
}


так-же и со вторым. Если я правильно понял вопрос smile 


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


Новичок



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

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



это я уже делала. изменение позиции бегунка (в Edit) видно в тот момент, когда его отпускаешь после перемещения, а мне надо, чтобы значение в Edit менялось уже в процессе перемещения бегунка. Green говорит умные вещи, но я не знаю, как работать с методом OnHScroll().

Это сообщение отредактировал(а) Lido4ka - 28.11.2007, 16:49
PM MAIL   Вверх
Greeen
Дата 28.11.2007, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



slider1, slider2 - переменные типа CSliderCtrl, связанные через DDX с контролами на диалоге. Вот метод OnHScroll диалога:
Код

void CMy1Dlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
    CSliderCtrl* pSlider = reinterpret_cast<CSliderCtrl*>(pScrollBar);
    if(pSlider == &slider1)
    {
        SetDlgItemInt(IDC_EDIT1, pSlider->GetPos());
    }
    else if(pSlider == &slider2)
    {
        SetDlgItemInt(IDC_EDIT2, pSlider->GetPos());
    }
    CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}



--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
Lido4ka
Дата 1.12.2007, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо, попробую
PM MAIL   Вверх
Lido4ka
Дата 4.12.2007, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Green, спасибо! Работает!
PM MAIL   Вверх
Greeen
Дата 4.12.2007, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Пожалста  smile 


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


 




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


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

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