0

我有一个 C++ ATL COM DLL (phew),它公开了一个 VideoPlayer 类,它本身封装了对 Windows Media Foundation 的调用。

我从 WPF 应用程序中使用这个 DLL,我想在其中在控件中显示视频。

我的 DLL 有一个名为 Initialize 的方法,它需要 2 个 HWND 用于 MF。

我应该如何声明这个函数?我应该在 WPF 应用程序中给它什么?

目前,我有:

视频播放器.h

STDMETHOD(Initialize)(
    OLE_HANDLE video_hwnd, 
    OLE_HANDLE event_hwnd
    );

视频播放器.cpp

STDMETHODIMP VideoPlayer::Initialize(
    OLE_HANDLE hVideo, 
    OLE_HANDLE hEvent
    )
{
    m_hwndVideo = (HWND) (DWORD_PTR)hVideo;
    m_hwndEvent = (HWND) (DWORD_PTR)hEvent;
}

WPF 应用程序:

private void Button_Click(object sender, RoutedEventArgs e)
{
    var handle = new WindowInteropHelper(this).Handle.ToInt32();
    videoPlayer = new EmideeMediaFoundationLib.VideoPlayer();

    videoPlayer.Initialize( handle, handle );
}

我在 Initialize 函数中收到正确的值,但转换为 HWND 失败...

有任何想法吗?

提前致谢

麦克风

4

0 回答 0