问题标签 [wpf-interop]
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.
c# - 为什么我的 WPF 托管 WinForm 为空白?
我使用了这个博客中的代码,如下所示,但有删节,我在主窗口中看到了 WinForm,但我在标签上放置的示例文本不可见。
和:
c# - 如何与托管在 WPF 用户控件中的 Delphi 窗口进行通信?
好吧,实际上我知道我可以通过它的消息泵与窗口本身、平面 GUI 进行通信,但是假设我想在生成和维护该窗口的 Delphi DLL 中调用一个 COM 公开函数?我首先必须以某种方式确定拥有该窗口的模块。
与 Delphi 端的通信很少:您现在是托管的,您的主机 ID 是x,您可以关闭,您必须关闭等。其余时间我将把我的主机公开为一个 COM 对象,Delphi 代码可以更轻松地交谈至。
wpf - 当我在 WPF 控件中托管 Win32 窗口时,我必须处理哪些 Windows 消息?
到目前为止,我只知道我必须监听 WM_CLOSE,这是一个关闭请求,以及 WM_DESTROY,这是关闭后窗口实际销毁的时间。我需要处理这些,因为我需要避免使用关闭的 Win32 窗口出现无用的 Win32 主机视图。
还有其他终止类型的消息吗?我不介意知道托管窗口的模块是否由于某种原因不稳定,这也将迫使我关闭我的主机视图。
wpf - WPF 中的托管窗口不会收到鼠标消息
比在我的 WPF 应用程序中托管 WinForms 用户控件更进一步,我实际上托管的是 Delphi 表单,即顶级窗口。我通过博客文章How To Host Top-Level HWNDs In WPF中的巫术来做到这一点。
几乎所有东西都能完美运行。我发送了一个在 Delphi 中构建的 COM 服务器,一个菜单路径字符串,它发送回一个窗口句柄,我将它传递给博客中描述的主机控件。Delphi 窗口几乎可以正确接收所有事件(更确切地说是 Windows 消息),而无需我进行任何干预。
唯一的问题是按钮。他们很好地收到了点击事件/消息,并且可以正常工作,但是现在 Delphi 的家伙已经为按钮添加了新图标,并且每个按钮都有一个活动图标、一个悬停图标和一个点击图标。他们没有收到任何应该更改这些图标的消息。为什么除了这些之外几乎所有消息都有效?我可以阅读和/或做些什么来尝试纠正这个问题?
c# - 当 .Net Framework 从 3.5 更改为 4.5 时,WPF 互操作控件呈现黑色
我有一个关于将 WinForms 控件嵌入 WPF 应用程序以及 .Net 框架版本之间的差异的互操作问题。
以下应在 WebBrowser 控件上显示一个透明的 wpf 控件(红色框),并在使用 .Net 3.5 时按预期工作:
...但在使用 .Net 4.5 编译后会发生以下情况。
切换回 .Net 3.5 后一切正常
以下代码适用于使用 .Net 3.0 到 .Net 3.5 但不适用于 .Net 4.0/4.5 的 Win32 的 WPF:
Win32HostRenderer.xaml:
Win32HostRenderer.xaml.cs:
位图缓冲区.cs:
InteropForm 只是派生的 System.Windows.Forms.Form 并没有什么特别的魔力。
集成到 WPF-Page 很简单:
在窗口加载事件之后:
(来自 Jeremiah Morrill 的代码部分,请参阅此博客了解更多信息)
wpf - WPF Winforms 互操作吃击键
我创建了一个带有 4 个文本框和一个按钮的单个表单的 winform 项目。
单击按钮时,我执行以下操作:
其中窗口 1 是 Wpf 窗口。Window1 上有一个按钮,当单击该按钮时,会发生以下情况:
当您运行应用程序时,会弹出 WinForm 表单。如果你点击选项卡,它会在 4 个文本框之间循环,没问题。然后单击按钮打开 WPF 窗口。单击该按钮并弹出消息框。让它们保持打开状态,然后返回 WinForm 表单,您不能再通过选项卡浏览这些字段,但您可以键入其他字符。看起来好像文本框得到了击键,但表单没有得到它们。我还收到系统提示音,好像模型正在敲击键盘一样。
编辑 2014 年 9 月 9 日下午 3:44
汉斯在评论中回应并且是正确的。我尝试描述一个更简单的案例,让其他人更容易重现使用相同的症状。我们的实际问题是我们创建了一个窗口基类,它支持模态到父功能。这是我们BaseWindow的相关代码
我确定这段代码取自某种博客/论坛帖子,但我无法在代码中找到对它的任何引用。我们希望将模式保留为父模式,但有些方法可以解决奇怪的按键问题。要重现此问题,请替换 Window1 中的 button_click 以在将其用作基类的窗口上调用 ShowModalToParent。
wpf - ElementHost 在调整大小时闪烁黑色边框
免责声明:这不是重复的帖子。我用谷歌搜索了这个问题。另请阅读此、此和此SO 问题。我尝试了其中一些东西,但似乎没有任何帮助。
考虑以下简单的示例代码。它只是 WinForm 中的一个空ElementHost(内部没有 WPF 控件):
调整表单大小时,可以在表单边框处看到两条黑边:
请,¿有人可以通过我的示例给出一个可行的解决方案来解决这个问题吗?
c# - 如何“从”我直接创建的 HwndSource 获取 WPF 窗口?
如果我直接创建一个,那么我是否还创建了一个现在可以从代码访问HwndSource
的 WPF ?Window
如果是这样,我该如何访问它?
或者我现在需要以某种方式“添加”一个 WPFWindow
吗HwndSource
?如果是这样,我该怎么做?
我已经HwndSource
彻底研究了文档,这部分根本没有解释清楚。我知道我可以HwndSource
从现有的 WPF 窗口中获取,但这对我没有帮助。我需要拦截 的创建Window
,所以我可以强制它设置WS_CHILD
样式并直接设置它的父级;并且文档说如果要强制其父级,则必须直接创建 HwndSource 。
编辑:我一直在研究我能找到的每一个问题HwndSource
;看起来您通过将对象的属性设置为要显示的 WPF 对象,将WPF对象“添加”到对象;或者也许通过调用方法?接下来将检查那些。希望这对其他提问者有用。HwndSource
RootVisual
HwndSource
HwndSource
AddSource
wpf - 是否可以将 QT 应用程序托管到 WPF 应用程序中?
我正在尝试创建 WPF GUI 应用程序来托管已经存在的 QT GUI 应用程序作为主 UI 的一部分。
QT 应用程序不需要处理鼠标/键盘输入。
我已经尝试过这个SO Post中提到的方法。似乎所有这些方法都不适用于 QT 应用程序。
c# - Wpf Monogame Interop 不会在 Designer 中加载
嗨,我从这个位置使用 WpfInterop NuGet 插件https://gitlab.com/MarcStan/MonoGame.Framework.WpfInterop/ 我按照自述文件中的方式完成了所有操作,但它不会加载到我的设计器中。
它总是说“无法创建“Game1”的实例(从德语翻译)并且也不会编译。
我已经尝试了一个新项目,但结果仍然相同。使用其他窗口也不起作用,即使生成新的 Game 类也无济于事。
我的 XAML 文件:
编辑:我的 Game1 类