![]() |
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]() ![]() ![]() |
|
Ferrisgeneral |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 11.1.2010 Репутация: нет Всего: нет |
написал часть файлика по воспроизведению музыки.
не знаю как сделать и поправить пару мест: - при повторном нажатии кнопки Play после паузы (во время воспроизведения нажать кнрпку Play) запускается еще один экземляр ffdshow audio decoder (можно наблюдать в трее), но не понимаю почему (вродебы нигде ничего не делаю) - как сделать, чтобы поменять текст на кнопочке (в моем случае это кнопочка Play, текст на которой надо менять на Pause и обратно) - как сделать регулятор громкости на основе добавленного в диалоговое окно Trackbar (SlideBar) проектик: http://www.sendspace.com/file/7rl5pr |
|||
|
||||
Ferrisgeneral |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 11.1.2010 Репутация: нет Всего: нет |
второй вопросец (про смену текста на кнопочку) уже решил.
первый вопросец тоже сам собой решился. ----- помогите советом, как сделать регулятор громкости ... не могу понять, толи у меня не получается его настроить, толи не получается получить правильно значение от TrackBar в WM_HSCROLL Это сообщение отредактировал(а) Ferrisgeneral - 29.9.2010, 19:03 |
|||
|
||||
Ferrisgeneral |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 11.1.2010 Репутация: нет Всего: нет |
Немного доработал плеер, и поисправлял баги (хотя парачка еще осталась)
Добавил приглушение музыки, но никак не получается всетаки сделать регулятор громкости, точнее видимо не получается обрабатывать сообщения от TrackBar. Посоветуйте чего нибудь дельное. обновленный проектик: http://www.sendspace.com/file/bxu9u0 |
|||
|
||||
BorisVorontsov |
|
|||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: 1 Всего: 10 |
DirectShow не относится к DirectX еще с 2005 года, это теперь системная технология и должна обсуждаться в разделе по системному программированию
Что же касается твоего последнего вопроса, то сообщения от TrackBar'а у тебя обрабатываются, а точнее, сообщение WM_HSCROLL Но внутри вместо этого
Должна быть проверка кода, который TB передает в нижнем слове wParam, и должно быть получение значения TB из верхнего слова wParam. Значение передается вместе с кодами TB_THUMBPOSITION и TB_THUMBTRACK -------------------- [code=cpp] const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out); for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl; [/code] |
|||
|
||||
Ferrisgeneral |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 11.1.2010 Репутация: нет Всего: нет |
да, эти сообщения ловит, но получить позицию всеравно не получается (res всегда = 0)
|
|||
|
||||
BorisVorontsov |
|
|||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: 1 Всего: 10 |
По поводу TBM_GETPOS, подозреваю, что у тебя невалидный хендл -------------------- [code=cpp] const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out); for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl; [/code] |
|||
|
||||
Ferrisgeneral |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 11.1.2010 Репутация: нет Всего: нет |
handle и правда не валидный был.
но теперь другая напасть, res всегда теперь равно очень большому числу (т.е. ранее сделанные настройки диапазона trackbar в WM_INITDIALOG игнорируются). |
|||
|
||||
BorisVorontsov |
|
|||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: 1 Всего: 10 |
Во-первых, InitCommonControls(); в процедуре диалога с общими элементами вызывать нельзя. Эта функция регистрирует в процессе классы, которые уже должны быть зарегистрированы при создании диалога
Во-вторых, почему ты упрямо игнорируешь позицию TB, которая передается в wParam? -------------------- [code=cpp] const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out); for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl; [/code] |
|||
|
||||
Ferrisgeneral |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 11.1.2010 Репутация: нет Всего: нет |
а где тогда должен находиться InitCommonControls(); ?
мне кажется что он вообще сдесь не нужен. я может и не игнорировал позицию ТВ, если бы понимал что нужно сделать. ![]() |
|||
|
||||
BorisVorontsov |
|
|||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: 1 Всего: 10 |
В WinMain, или до вызова CreateDialog/DialogBox
Гм. Нужно прочесть позицию из верхнего слова wParam. Для этого существует макрос HIWORD -------------------- [code=cpp] const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out); for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl; [/code] |
|||
|
||||
![]() ![]() ![]() |
Вы можете найти полезным что... | |
|
|
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |