System.InvalidOperationException:“寄宿的 HWND 必须是指定父级的子窗口。”
当试图在 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 必须是指定父级的子窗口。”相关推荐
- System.InvalidOperationException:“寄宿 HWND 必须是子窗口。”
当试图在 WPF 窗口中嵌套显示 Win32 子窗口的时候,你有可能出现错误:"System.InvalidOperationException:"寄宿 HWND 必须是子窗口.& ...
- 如何强制子div为父div的高度的100%而不指定父级的高度?
我有一个具有以下结构的网站: <div id="header"></div><div id="main"><div i ...
- System.ComponentModel.Win32Exception: 系统找不到指定的文件
问题描述: System.ComponentModel.Win32Exception: 系统找不到指定的文件. 在 System.Diagnostics.Process.StartWithShe ...
- 关于System.InvalidOperationException异常
关于System.InvalidOperationException异常 参考文章: (1)关于System.InvalidOperationException异常 (2)https://www.cn ...
- asp.net 访问 access出现 ole_connection.ServerVersion引发了System.InvalidOperationException的解决
今天在一台电脑上使用asp.net访问access,出现了 ole_connection.ServerVersion引发了System.InvalidOperationException: 下面是解决 ...
- System.InvalidOperationException:“线程间操作无效: 从不是创建控件“txtPortName02”的线程访问它。”...
"System.InvalidOperationException"类型的未经处理的异常在 System.Windows.Forms.dll 中发生 其他信息: 线程间操作无效: ...
- C#——实现IComparableT 接口,ArrayLIst调用ArrayLIst.Sort()抛出System.InvalidOperationException异常解决方案
问题描述 未经处理的异常: System.InvalidOperationException: 未能比较数组中的两个元素. ---> System.ArgumentException: 必须至少 ...
- 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 ...
- 解决方案:System.InvalidOperationException: 此实现不是 Windows 平台 FIPS 验证的加密算法的一部分。
解决方案:System.InvalidOperationException: 此实现不是 Windows 平台 FIPS 验证的加密算法的一部分. 参考文章: (1)解决方案:System.Inval ...
最新文章
- 深入浅出Nintex——更新PeopleandGroup类型的Field
- 【深度学习】12张高清思维导图,总结深度学习
- 开源GIS(十二)——openlayers中加载切片原理
- 【深度优先搜索】牛客网:剪绳子
- 现代软件工程 第一章 【概论】第6题——原旭莹
- 返回顶部php代码,页面按需返回顶部代码及注释说明
- 数据库常见面试题 —— 3. 数据库去重的方法
- 保密计算机和移动存储介质台账,银行计算机和移动存储介质保密管理办法
- 英文阅读新姿势:新版 Edge + 侧边翻译
- java 内部类总结_java学习笔记9--内部类总结
- [Android]按阶段编译Android kernel中的代码
- “首月0保费”导流模式告终 知名互联网保险平台开始裁员
- 【PBR系列一】PBR知识体系
- Unity编辑器小工具——文件查重(MD5)
- inet_aton函数
- 联想服务器怎么做系统备份,Lenovo笔记本一键恢复8.0如何进行系统备份
- Excel如何快速录入数字转为大写金额公式
- 电磁超声传感器的三大典型结构
- 独立开发并发布自己的一款手游——SpaceWar
- android studio布局无法点击,Android Studio菜单项单击不起作用