繁体   English   中英

在 MFC 中嵌入 Windows 媒体播放器

[英]Embedding Windows Media Player in MFC

我正在尝试使用 Visual Studio 2019 将 WMP 嵌入到新创建的基于 MFC 对话框的应用程序中。这些是我正在遵循的步骤:

  1. 创建新项目
  2. Go 到资源视图并单击插入 ActiveX 控件
  3. Select Windows 媒体播放器并单击确定
  4. 将新创建的 WMP 元素的 ID 更改为不太通用的 ID,例如WMP_Player
  5. 右键单击 WMP 元素和 select 添加变量
  6. 我将变量名称设置为m_wmp
  7. 新变量被创建并且CWMP_Player.hCWMP_Player.cpp被添加到项目中。

我尝试构建项目,但失败了。 CWMP_Player.h中有 354 个错误,例如:

严重性代码描述项目文件行抑制State

错误 C2535 BOOL CWMP_Player::get_isAvailable(LPCTSTR) : 成员 function 已定义或声明 WinMediaPl

错误 C2377 BOOL :重新定义; typedef 不能用任何其他符号 WinMediaPl 重载

错误 C2660 CWMP_Player::InvokeHelper : function 不占用 5 arguments WinMediaPl

虽然CWMP_Player.cpp几乎是空的,但只有几个包含(一个是pch.h )和这一行:

IMPLEMENT_DYNCREATE(CWMP_Player, CWnd)

我忘了一步吗? 我应该在这个文件或其他文件中包含一些东西吗?

在我看来,VS2019添加的class文件中自动添加的代码与WinMediaPl中的定义有冲突。 对比VS2017和VS2019自动添加的代码后,发现下面自动添加的代码在CWMP_Player.h或其他.h中是多余的。

// Operations
public:
// IWMPPlaylist

// Functions
//

    long get_count()
    {
        long result;
        InvokeHelper(0xC9, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, nullptr);
        return result;
    }
    CString get_name()
    {
        CString result;
        InvokeHelper(0xCA, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, nullptr);
        return result;
    }

...

    VARIANT getItemInfoByType(long lCollectionIndex, LPCTSTR bstrType, LPCTSTR bstrLanguage, long lAttributeIndex)
    {
        VARIANT result;
        static BYTE parms[] = VTS_I4 VTS_BSTR VTS_BSTR VTS_I4 ;
        InvokeHelper(0x5AE, DISPATCH_METHOD, VT_VARIANT, (void*)&result, parms, lCollectionIndex, bstrType, bstrLanguage, lAttributeIndex);
        return result;
    }

因此,您可以将它们注释掉。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM