MFC 应用程序中的 WPF System.Windows.Navigation.NavigationWindow
Posted
技术标签:
【中文标题】MFC 应用程序中的 WPF System.Windows.Navigation.NavigationWindow【英文标题】:WPF System.Windows.Navigation.NavigationWindow in MFC application 【发布时间】:2014-12-16 14:23:22 【问题描述】:我需要在 MFC Win32 应用程序中使用带有 System.Windows.Navigation.NavigationWindow 的 WPF Lib,但我的 WPF Windows 不是黑屏。我在调试输出中没有错误消息。
我尝试过的所有其他 WPF 控件在 MFC 中都可以正常工作(按钮、网格、使用 C++ 的 D3D)。
有人知道如何调试或如何调查吗?
谢谢
编辑:问题也发生在 System.Windows::Window 上。如果我在 WPF 应用程序中使用我的 WPF,它就可以正常工作。
【问题讨论】:
您是否有小样本会产生您遇到的这个问题? 您可以获取 microsoft 示例并在 WPF 中添加 NavigationWindow:go.microsoft.com/fwlink/?LinkID=160004 DarkPixel,这看起来相似吗? ***.com/questions/19794765/… 也许是相关的。但它在 WPF 应用程序中工作正常,我的问题似乎特定于 MFC 我不完全确定我是否理解您:您是否尝试在 Win32 窗口中托管 WPF 窗口?那是不可能的。或者你只是打电话给(new System.Windows::Window()).Show();
?
【参考方案1】:
我找不到可行的解决方案,但这是我目前的解决方法。
我用我的 WPF Lib 创建了一个单独的 WPF 应用程序。
在我的 MFC 应用程序中我这样做:
HWND wpfProcessMainWnd = CreateProcessWPF();
SetParent(wpfProcessMainWnd, hWnd);
DWORD style = GetWindowLong(wpfProcessMainWnd, GWL_STYLE);
style |= WS_CHILD;
style &= ~(WS_BORDER | WS_OVERLAPPEDWINDOW);
SetWindowLong(wpfProcessMainWnd, GWL_STYLE, style);
SetWindowPos(wpfProcessMainWnd, NULL, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
发件人:https://***.com/a/16641537/2849700
【讨论】:
以上是关于MFC 应用程序中的 WPF System.Windows.Navigation.NavigationWindow的主要内容,如果未能解决你的问题,请参考以下文章