在 Win32 API 中,IMediaPosition 接口是与多媒体操作相关的 COM 接口之一。它通常与 DirectShow 相关的多媒体框架一起使用,用于获取和设置媒体的播放位置。

以下是关于 IMediaPosition 接口的一些基本信息:
#include <Control.h>

// 定义 IMediaPosition 接口的 GUID
// {56A868B2-0AD4-11CE-B03A-0020AF0BA770}
DEFINE_GUID(IID_IMediaPosition, 
0x56A868B2, 0x0AD4, 0x11CE, 0xB0, 0x3A, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70);

// IMediaPosition 接口的定义
DECLARE_INTERFACE_(IMediaPosition, IUnknown)
{
    // IUnknown 接口的成员函数
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    // IMediaPosition 接口的成员函数
    STDMETHOD(get_Duration)(THIS_ REFTIME *pDuration) PURE;
    STDMETHOD(put_CurrentPosition)(THIS_ REFTIME llTime) PURE;
    STDMETHOD(get_CurrentPosition)(THIS_ REFTIME *pllTime) PURE;
    STDMETHOD(get_StopTime)(THIS_ REFTIME *pTime) PURE;
    STDMETHOD(put_StopTime)(THIS_ REFTIME llTime) PURE;
    STDMETHOD(get_PrerollTime)(THIS_ REFTIME *pTime) PURE;
    STDMETHOD(put_PrerollTime)(THIS_ REFTIME llTime) PURE;
    STDMETHOD(put_Rate)(THIS_ double dRate) PURE;
    STDMETHOD(get_Rate)(THIS_ double *pdRate) PURE;
    STDMETHOD(CanSeekForward)(THIS_ long *pCanSeekForward) PURE;
    STDMETHOD(CanSeekBackward)(THIS_ long *pCanSeekBackward) PURE;
};

这段代码展示了 IMediaPosition 接口的定义和相关的一些函数。通过该接口,你可以获取媒体的时长、设置和获取当前播放位置、设置和获取停止时间、设置和获取预加载时间、设置和获取播放速率等操作。这些功能对于实现对媒体播放的精确控制是很有用的。


转载请注明出处:http://www.zyzy.cn/article/detail/25105/Win32 API/Control.h/IMediaPosition