问题标签 [hwndsource]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2007 浏览

c# - 使用 HwndSource 在 Win32 应用程序中托管 WPF UserControl

我需要通过 Handle 在其他窗口中托管我的 WPF UserControl。我尝试使用 HwndSource:

但在这种情况下,箭头和制表键不起作用。

如果我使用 ElementHost 一切正常:

如何使用 HwndSource 获得全部功能?

0 投票
3 回答
10308 浏览

c# - PresentationSource.FromVisual(this) 在 WPF 中返回空值

我正在使用以下代码:

在某些系统中,“源”值是空的,我找不到原因......

0 投票
1 回答
660 浏览

c# - ElementHost 中托管的 WPF 元素未正确重绘

我正在编写一个程序来在 C# 中实现 COM 组件。该组件也提供了一个 UI 组件。为了便于实现组件的未来添加,我决定使用 WPF 在 Xaml 中编写 UI,并将其包装在 ElementHost 控件中,以便将句柄返回给 COM 使用者。

这就是有趣的地方。该元素托管在 win32 选项卡控件中。第一次选择选项卡时,它加载正常。切换到另一个选项卡并返回会导致它无法正确绘制组件。如果我在其中移动鼠标,它将绘制 TextBox 元素,但它永远不会重绘整个 UserComponent。

我已经尝试了我看到的所有可能的解决方案,从更改组件的高度/宽度值到将 HwndTarget 置于 SoftwareOnly 呈现模式。

我不确定此时要尝试什么,因此欢迎提出建议。我真的很想在不使用 Windows 窗体的情况下做到这一点,因为它的未来维护者不是最好的程序员,告诉他们编写一个带有数据绑定的 Xaml 文件比手动布局表单并设置要容易得多代码隐藏中的值。

0 投票
1 回答
2060 浏览

c# - 如何“从”我直接创建的 HwndSource 获取 WPF 窗口?

如果我直接创建一个,那么我是否还创建了一个现在可以从代码访问HwndSource的 WPF ?Window如果是这样,我该如何访问它?

或者我现在需要以某种方式“添加”一个 WPFWindowHwndSource?如果是这样,我该怎么做?

我已经HwndSource彻底研究了文档,这部分根本没有解释清楚。我知道我可以HwndSource从现有的 WPF 窗口中获取,但这对我没有帮助。我需要拦截 的创建Window,所以我可以强制它设置WS_CHILD样式并直接设置它的父级;并且文档说如果要强制其父级,则必须直接创建 HwndSource 。

编辑:我一直在研究我能找到的每一个问题HwndSource;看起来您通过将对象的属性设置为要显示的 WPF 对象,将WPF对象“添加”到对象;或者也许通过调用方法?接下来将检查那些。希望这对其他提问者有用。HwndSourceRootVisualHwndSourceHwndSource AddSource

0 投票
1 回答
2636 浏览

c# - 从另一个 WPF 应用程序向 WPF 应用程序发送窗口消息

我在服务器端使用了这段代码

我像这样从客户端发送消息

问题是服务器端收不到这个消息,为什么?

0 投票
0 回答
363 浏览

c# - 如何更改 HwndSource 窗口大小 C#

我在 C# 中创建了一个窗口作为 C++ 窗口处理程序的子窗口,代码如下:

但是,创建此子窗口后,我无法通过使用更改其大小

创建后有什么方法可以改变它的大小吗?谢谢~!

0 投票
0 回答
556 浏览

c# - 在非托管 C++/CLI 应用程序中托管时如何在 WPF UI 线程上工作

我有一个 WPF 日志查看器用户控件,它通过命名管道接收日志消息。管道消息在线程池线程上接收和处理,然后我将其传递给 UI 以通过 Application.Current.Dispatcher.Invoke 调用显示。在 .Net 主机应用程序中运行时就像一个魅力。

当我使用 HwndSource 在非托管 C++/CLI 应用程序中托管控件时,Application.Current 为空。在这种情况下,如何在 UI 线程上执行代码?

0 投票
1 回答
509 浏览

c# - 直接创建 HwndSource

我正在尝试通过直接创建来创建一个窗口HwndSource。目前我有一个替代解决方案 - 从Window类继承,但我只是好奇我的HwndSource实现有什么问题。由于在其核心中Window使用HwndSource,我觉得应该有一种方法。

这是我的代码的简化版本:

窗口按预期创建,但在我关闭它(Alt+F4 或关闭图标)并将鼠标悬停在我的主窗口上后,大量消息被吐到调试器中:

抛出异常:WindowsBase.dll 中的“System.ComponentModel.Win32Exception”

异常详情如下:

堆栈跟踪:

因此,错误发生在框架代码深处。

我尝试填充其他属性或向Disposed处理程序添加清理,但这对结果没有影响。如果我不设置RootVisual,则没有错误(但是,当然,这不是一个选项)。

有什么我想念的想法吗?

0 投票
0 回答
240 浏览

wpf - WPF,挂钩窗口,弹出窗口

在 App.xaml.cs 或另一个起始类实例中,您需要添加:

其中,是的RootSourceProperty私有字段DependecyPropertyPresentationSource其属性在HwndSource创建时使用并设置 RootVisual。所以你只需要使用属性更改回调RootSourceProperty

这很好,因为您可以在所有应用程序中使用它并为所有HwndSource(或自定义控件,您正在使用的地方Popup)使用它WindowHwndSource

0 投票
0 回答
142 浏览

c# - 如何更改 HwndSource RootVisual

我有一个 HwndSource 和两个 WPF 用户控件,我想将其中一个设置为此 HwndSource 的 RootVisual,有时在这两个 WPF 用户控件之间切换。

只是想知道我能做到吗?

我的两个 WPF 用户控件是m_media, m_stored

第一次我只是新建 HwndSource 对象并用于HwndSource.RootVisual = m_media设置根视觉,然后我想将其根视觉更改为m_stored,谁能告诉我该怎么做?

非常感谢大家。