1

MFC アプリケーションで WPF ウィンドウをホストしようとしています。WPF ウィンドウをラップする CCustomEditor クラスを作成しました。次の create メソッドがあります。

BOOL CCustomEditor::Create(LPCTSTR lpszWindowName, DWORD dwStyle,
    const RECT& rect, CWnd* pParentWnd)
{ 
        if (objInterop == NULL) 
        {
            DialogWindow ^myWindow = gcnew DialogWindow(pParentWnd);
            CUnmanagedCustomEditor *objProxy = new CUnmanagedCustomEditor();
            objInterop = objProxy;
            System::String ^strClassName = msclr::interop::marshal_as<System::String ^>(lpszWindowName);
            HwndSourceParameters^ sourceParams = gcnew HwndSourceParameters(strClassName);
            sourceParams->PositionX = rect.left;
            sourceParams->PositionY = rect.top;
            sourceParams->ParentWindow = System::IntPtr(pParentWnd->GetSafeHwnd());
            sourceParams->WindowStyle = dwStyle;
            objProxy->m_hwndSource= gcnew HwndSource(*sourceParams);
            objProxy->m_wpfUC                   = myWindow;     
            objProxy->m_hwndSource->RootVisual  = objProxy->m_wpfUC; 
            // we need to attach a handle since it is a window control
            Attach((HWND) objProxy->m_hwndSource->Handle.ToPointer());  
        }

    return TRUE;
}

私が遭遇している問題はこれにあります:

DialogWindow ^myWindow = gcnew DialogWindow(pParentWnd);

CWnd を直接 System.Windows.Window として扱うことはできないことはわかっていますが、どのような変換が必要かはわかりません。

4

0 に答える 0