如何为ATL COM dll提供WPF控件的HWND

时间:2011-11-03 16:37:54

标签: wpf com atl hwnd ms-media-foundation

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

我在WPF应用程序中使用此DLL,我想在控件中显示视频。

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

我该如何宣布这个功能? 我应该在WPF应用程序中给它什么?

现在,我有:

VideoPlayer.h

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

VideoPlayer.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失败了......

有什么想法吗?

提前致谢

麦克

0 个答案:

没有答案