Как создать поток в MFC для управления движением слайдера относительно воспроизводимого аудиофайла?

Мне удалось переместить SliderControl в соответствии с положением, используя CSliderCtrl :: GetPos, который воспроизводит программа. (Это часть моего проекта Music Player MFC).

Но мне нужно сделать это автоматически без каких-либо уведомлений / событий ….

Я думал о создании темы, которая будет перемещать слайдер после нажатия на кнопку воспроизведения.

0

Решение

Как правило, вы хотите, чтобы только один поток обновлял пользовательский интерфейс (и делал как можно меньше).

Почти наверняка будет лучше иметь дополнительный поток, воспроизводящий музыку. Он может отправить сообщение в поток пользовательского интерфейса, и поток пользовательского интерфейса обновляет позицию управления ползунком, когда получает это сообщение.

3

Другие решения

Всегда полезно обновлять пользовательский интерфейс из основного потока, а не добавлять новый поток для обновления пользовательского интерфейса. Лучше выполнять фоновые задачи с помощью рабочего потока и обновлять пользовательский интерфейс, отправляя сообщение в основной поток при необходимости.

В вашем случае вы можете создать рабочий поток для воспроизведения музыки и отправить сообщение в основной поток, чтобы обновить положение ползунка.

::SendMessage( AfxGetMainWnd()->m_hWnd, Message_Id, ( WPARAM )&String, 0 );

Вы можете использовать API CSliderCtrl :: SetPos () для обновления позиции.

1

По вопросам рекламы [email protected]