Я сейчас пытаюсь собрать плеер буквально с нуля, используя Media Foundation Interfaces.
Я использую пример, взятый отсюда:
https://msdn.microsoft.com/en-us/library/windows/desktop/dd979592(v=vs.85).aspx
В качестве основы для игрока.
Я хочу добавить кнопки (кнопка «назад / вперед», индикатор выполнения и т. Д.) В окно экрана видео, но мне не очень понятно, как.
Я не могу просто добавить кнопку в качестве дочернего элемента главного окна, поскольку она скрыта плеером, я пытался добавить кнопки в качестве дочерних элементов окна Видео, но это не сработало ...
Как правильно добавить кнопки в видеоокно?
Это часть кода, где вы регистрируетесь в окне проигрывателя (для полного кода, пожалуйста, введите ссылку, которую я прикрепил).
// create the instance of the player hwnd = handle of main window
HRESULT hr = CPlayer::CreateInstance(hwnd, hwnd, &g_pPlayer);
// inner call to cplayer
CPlayer *pPlayer = new (std::nothrow) CPlayer(hVideo, hEvent);
// Create a partial topology. (m_hwndVideo == hVideo == hwnd)
hr = CreatePlaybackTopology(m_pSource, pSourcePD, m_hwndVideo, &pTopology);
я пытаюсь использовать эту функцию, чтобы изменить видео краску, чтобы у меня были некоторые
поместите слева внизу, чтобы поставить мои кнопки, вот моя функция:
VOID update_lower_window(HWND hwnd)
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
RECT rc;
GetClientRect(hwnd, &rc);
//rc = father size
RECT repaint;
memcpy(&repaint, &rc, sizeof(RECT));
repaint.top = repaint.bottom - DOWN_SPACE; // DOWN_SPACE == 50
// paint back bottom to white
FillRect(hdc, &repaint, (HBRUSH)COLOR_WINDOW);
EndPaint(hwnd, &ps);
}
я вызываю эту функцию, когда:
WM_PAINT
случилось
WM_SIZE
случилось
WM_CREATE
случилось
С этими словами я все еще не смог достичь своих целей:
- Когда фильм начинает воспроизводиться, он запускается в полноэкранном режиме и не оставляет свободного места, которое я хотел (кажется, я не могу найти сообщение, отправленное во время воспроизведения фильма, или другими словами, когда фильм рисует на экране, он не отправлен одно из сообщений, в которое я вставил свою функцию)
- Когда я уменьшаю экран, остатки предыдущего экрана все еще остаются внизу, и я не вижу фон.
- При использовании кнопки «Свернуть» возникает то же явление, что и в 2.
Еще одна интересная деталь Явление, которое я упомянул в 2, возникает только тогда, когда я изменяю размер окна путем перетаскивания снизу вверх, если я изменяю размер окна путем перетаскивания из одного угла (увеличивает или уменьшает высоту и ширину одновременно), то окно исправляет себя и я вижу в нижней белой части (фон) все время.