![]() |
1
23
步骤1:配置MFC应用程序以使用CLR支持进行编译 实现本地C++和托管.NET代码之间互操作性的最好方法是将应用程序编译为托管C++而不是本机C++。这是通过转到项目的配置属性来完成的。在General下有一个选项“公共语言运行时支持”。将其设置为“公共语言运行时支持/clr”。 步骤2:将WPF程序集添加到项目中
步骤3:在MFC应用程序上设置STAThreadAttribute
步骤4:创建HwndSource实例以包装WPF组件 System::Windows::Interop::HwndSource是一个.NET类,用于处理MFC和.NET组件之间的交互。使用以下语法创建一个:
m_hWnd=(hWnd)源->Handle.ToPointer(); 源对象和关联的WPF内容将一直存在,直到您调用::DestroyWindow(m_hWnd)。 步骤5:将WPF控件添加到HwndSource包装器
由于浏览器变量在我们退出创建函数后将超出范围,因此我们需要以某种方式保留对它的引用。托管对象不能是非托管对象的成员,但可以使用名为gcroot的包装模板来完成作业。 将成员变量添加到对话框类:
现在我们可以通过m_webBrowser访问WPF组件上的属性和方法。 |
![]() |
cyber101 · vc++未声明的标识符,尽管其已声明 7 年前 |
![]() |
areum · 如何在列表控件中创建右键单击菜单? 7 年前 |
![]() |
Rafal · 如何在MFC中的CWnd中显示CFormView? 7 年前 |
![]() |
Anton Savelyev · 在发布版本中删除类指针会导致内存问题 7 年前 |
![]() |
xtkwfn · 如何查找目录[已关闭]下的所有文件夹 7 年前 |
![]() |
Andrew Truckle · 在WPARAM中组合5个值 7 年前 |
![]() |
user3070144 · 通过全局接口表封送ActiveX 7 年前 |