在 Windows 应用程序中托管Windows 媒体播放器控件

若要在基于Windows的程序中使用Windows 媒体播放器 ActiveX控件 (包括用户界面) ,必须提供ActiveX控件容器。 ATL 提供 CAxWindow 类,以提供ActiveX主机窗口功能。

若要使用 CAxWindow 类托管Windows 媒体播放器控件,请执行以下步骤:

  1. 包括以下标头:

    #include "wmp.h"
    #include <atlbase.h>
    #include <atlcom.h>
    #include <atlhost.h>
    #include <atlctl.h>
    
  2. 声明成员变量,如下所示:

    CAxWindow  m_wndView;  // ActiveX host window class.
    CComPtr<IWMPPlayer>  m_spWMPPlayer;  // Smart pointer to IWMPPlayer interface.
    
    
  3. 创建应用程序窗口时,调用 AtlAxWinInit,这是使用 ATL ActiveX 主机窗口时所必需的。

    AtlAxWinInit();
    
    
  4. 声明返回代码的局部变量,并包含指向主机窗口接口的指针:

    CComPtr<IAxWinHostWindow>  spHost;
    HRESULT  hr;
    
    
  5. 创建主机窗口:

    GetClientRect(&rcClient);
    m_wndView.Create(m_hWnd, rcClient, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN, WS_EX_CLIENTEDGE);
    
    
  6. 检索主机窗口接口指针:

    hr = m_wndView.QueryHost(&spHost);
    
    
  7. 使用类 ID 在主机窗口中创建Windows 媒体播放器控件:

    hr = spHost->CreateControl(CComBSTR(_T("{6BF52A52-394A-11d3-B153-00C04F79FAA6}")), m_wndView, 0);
    
    
  8. 检索 IWMPPlayer 接口指针:

    hr = m_wndView.QueryControl(&m_spWMPPlayer);
    
    

编写自己的代码时,请务必检查每个 HRESULT 返回代码是否存在错误。

有关演示如何使用 CAxWindow 类托管Windows 媒体播放器 ActiveX控件的完整示例,请参阅 WMPHost 示例。

在 Windows CE 中托管 Windows 媒体播放器 10 移动控件

开发托管 Windows 媒体播放器 10 移动控件的基于Windows CE的应用程序时,必须安装 Microsoft eMbedded Visual C++ 4.0 和 Pocket PC 2003 SDK 或智能手机 2003 SDK。 此外,与用于Windows的 ATL 不同,适用于Windows CE的 ATL 不支持单元线程模型。 因此,必须在 ATL 项目中查找单元线程的所有实例,并更改它们以使用免费线程处理。

示例

在 C++ 程序中使用Windows 媒体播放器控件