我有一个 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 失败...
有任何想法吗?
提前致谢
麦克风