Как передать ATL COM dll HWND элемента управления WPF - PullRequest
0 голосов
/ 03 ноября 2011

У меня есть C ++ ATL COM DLL (phew), которая предоставляет класс VideoPlayer, который сам инкапсулирует вызовы Windows Media Foundation.

Я использую эту DLL из приложения WPF, в котором я хотел бы отобразить видео в элементе управления.

В моей 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 не удается ...

Есть идеи?

Заранее спасибо

Mike

...