c# - c# WPF 应用程序将对象放在 HwndSource 之上
问题描述
在 ac# WPF 应用程序中,我使用了一个用 Visual c++ 编写的第三方库(并且我用 c# 类包装了它的 DLL)。库的一种方法需要IntPtr
一个对象来绘制。所以我在我的应用程序中所做的如下:
HwndSource parentSource = (HwndSource)HwndSource.FromVisual(LiveViewer);
IntPtr parentHWnd = parentSource.Handle;
HwndSource source = new HwndSource(
0,
WS_VISIBLE | WS_CHILD,
0,
50, // x
50, // y
300, // width
300, // height
"Viewer",
parentHWnd
);
它按预期在我的 WPF 窗口上绘制了一个控制器,第三方库完成了它需要做的事情。
我想要做的是将其他 WPF 控件(图像和按钮)放在HwndSource
创建的新控件之上。但似乎该控制始终处于首位。
如何将 WPF 控件置于该控件之上?
解决方案
如果您阅读https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/wpf-and-win32-interoperation您会注意到这是预期的行为:
HwndHost 将出现在同一顶级窗口中的其他 WPF 元素之上。
您可能会做的是使用 SetWindowPos win32 api 将其状态更改为非最顶层(例如,使用此解决方案https://chriscavanagh.wordpress.com/2008/08/13/non-topmost-wpf-popup/ )
推荐阅读
- java - 当它们只有使用杰克逊的值时如何读取根节点?
- c# - 处理级联多对多 EF Core?
- c++ - 为低 CPU 使用率编写服务
- image-processing - 处理草图更新但不绘制
- java - Java从 Iterator创建 Iterable
没有警告 - refactoring - 如何通过另一个函数获取结果过程的倍数函数?
- node.js - 为什么 NPM 模块不能完全平坦,包括依赖项?
- node.js - 如何从 lambda 中的 Secure REST API 获取数据以获取 Alexa 技能?
- reactjs - 为什么 Webpack / Babel 在不需要时将 React 添加到构建中?
- node.js - Cloudinary 节点包出错 - 意外令牌