簡體   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