当试图在 WPF 窗口中嵌套显示 Win32 子窗口的时候,你有可能出现错误:“寄宿的 HWND 必须是指定父级的子窗口。”。

这是很典型的 Win32 错误,本文介绍如何修复此错误。


本文内容

  • 问题
  • 原因和解决办法

我们在 MainWindow 中嵌入一个其他的窗口来承载新的 WPF 控件。一般情况下我们当然不会这么去做,但是如果我们要跨越进程边界来完成 WPF 渲染内容的融合的时候,就需要嵌入一个新的窗口了。

WPF 中可以使用 HwndSource 来包装一个 WPF 控件到 Win32 窗口,使用自定义的继承自 HwndHost 的类可以把 Win32 窗口包装成 WPF 控件。由于窗口句柄是可以跨越进程边界传递的,所以这样的方式可以完成跨进程的 WPF 控件显示。

问题

你有可能在调试嵌入窗口代码的时候遇到错误:

System.InvalidOperationException:“寄宿的 HWND 必须是指定父级的子窗口。”

英文是:

Hosted HWND must be a child window of the specified parent.

原因和解决办法

出现此错误,是因为同一个子窗口被两次设置为同一个窗口的子窗口。

具体来说,就是 A 窗口使用 HwndHost 设置成了 B 的子窗口,随后 A 又通过一个新的 HwndHost 设置成了新子窗口。

要解决,则必须确保一个窗口只能使用 HwndHost 设置一次子窗口。


我的博客会首发于 https://blog.walterlv.com/,而 CSDN 会从其中精选发布,但是一旦发布了就很少更新。

如果在博客看到有任何不懂的内容,欢迎交流。我搭建了 dotnet 职业技术学院 欢迎大家加入。

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。

System.InvalidOperationException:“寄宿的 HWND 必须是指定父级的子窗口。”相关推荐

  1. System.InvalidOperationException:“寄宿 HWND 必须是子窗口。”

    当试图在 WPF 窗口中嵌套显示 Win32 子窗口的时候,你有可能出现错误:"System.InvalidOperationException:"寄宿 HWND 必须是子窗口.& ...

  2. 如何强制子div为父div的高度的100%而不指定父级的高度?

    我有一个具有以下结构的网站: <div id="header"></div><div id="main"><div i ...

  3. System.ComponentModel.Win32Exception: 系统找不到指定的文件

    问题描述: System.ComponentModel.Win32Exception: 系统找不到指定的文件.    在 System.Diagnostics.Process.StartWithShe ...

  4. 关于System.InvalidOperationException异常

    关于System.InvalidOperationException异常 参考文章: (1)关于System.InvalidOperationException异常 (2)https://www.cn ...

  5. asp.net 访问 access出现 ole_connection.ServerVersion引发了System.InvalidOperationException的解决

    今天在一台电脑上使用asp.net访问access,出现了 ole_connection.ServerVersion引发了System.InvalidOperationException: 下面是解决 ...

  6. System.InvalidOperationException:“线程间操作无效: 从不是创建控件“txtPortName02”的线程访问它。”...

    "System.InvalidOperationException"类型的未经处理的异常在 System.Windows.Forms.dll 中发生 其他信息: 线程间操作无效: ...

  7. C#——实现IComparableT 接口,ArrayLIst调用ArrayLIst.Sort()抛出System.InvalidOperationException异常解决方案

    问题描述 未经处理的异常: System.InvalidOperationException: 未能比较数组中的两个元素. ---> System.ArgumentException: 必须至少 ...

  8. System.InvalidOperationException: The stream does not support reading

    We are using EMS(.Net DLL, TIBCO.EMS.dll, version 4.3.0) as the middleware to communicate between .N ...

  9. 解决方案:System.InvalidOperationException: 此实现不是 Windows 平台 FIPS 验证的加密算法的一部分。

    解决方案:System.InvalidOperationException: 此实现不是 Windows 平台 FIPS 验证的加密算法的一部分. 参考文章: (1)解决方案:System.Inval ...

最新文章

  1. 深入浅出Nintex——更新PeopleandGroup类型的Field
  2. 【深度学习】12张高清思维导图,总结深度学习
  3. 开源GIS(十二)——openlayers中加载切片原理
  4. 【深度优先搜索】牛客网:剪绳子
  5. 现代软件工程 第一章 【概论】第6题——原旭莹
  6. 返回顶部php代码,页面按需返回顶部代码及注释说明
  7. 数据库常见面试题 —— 3. 数据库去重的方法
  8. 保密计算机和移动存储介质台账,银行计算机和移动存储介质保密管理办法
  9. 英文阅读新姿势:新版 Edge + 侧边翻译
  10. java 内部类总结_java学习笔记9--内部类总结
  11. [Android]按阶段编译Android kernel中的代码
  12. “首月0保费”导流模式告终 知名互联网保险平台开始裁员
  13. 【PBR系列一】PBR知识体系
  14. Unity编辑器小工具——文件查重(MD5)
  15. inet_aton函数
  16. 联想服务器怎么做系统备份,Lenovo笔记本一键恢复8.0如何进行系统备份
  17. Excel如何快速录入数字转为大写金额公式
  18. 电磁超声传感器的三大典型结构
  19. 独立开发并发布自己的一款手游——SpaceWar
  20. android studio布局无法点击,Android Studio菜单项单击不起作用

热门文章

  1. 汇编jnl_汇编跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等
  2. Learn Prolog Now 翻译 - 第二章 - 合一和证明搜索 - 第一节, 合一
  3. PDK工艺库安装总结
  4. 学计算机做近视眼手术,需要常对电脑的人,可以做近视手术吗?
  5. linux下普通文件和目录文件区别
  6. Photoshopcs6 自学笔记三 画笔工具
  7. 如何在hexo上创建一篇文章
  8. ROS中使用CloudXNS的DDNS功能
  9. STM32F103C8T6进行DAC播放
  10. Laravel 5文档阅读摘要