问题标签 [setparent]

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 投票
3 回答
16264 浏览

delphi - 如何外壳到另一个应用程序并让它以德尔福形式出现

在 Delphi 中,我多年来一直使用 ShellExecute 来启动(并可选择等待)其他应用程序。但现在,我需要让这些应用程序之一出现在我的 Delphi 应用程序表单之一中。我已经尝试将下面的代码作为一个简单的测试来打开记事本(它确实如此)并在我的表单上的 PAnel1 中显示结果(它没有)。某个好心人可以让我走上正轨吗?谢谢

0 投票
3 回答
1616 浏览

wpf - SetParent COM 和 WPF

我有两个屏幕。一个在 vb 中创建,第二个在 WPF 中。

我必须在 wpf 中嵌入 vb。

因此我有了一个想法,首先创建一个新的 Windows 窗体,并使用 win32 API 函数“SetParent”将 vb 屏幕嵌入到 Windows 窗体中。其次,使用 wpf WindowsFormsHost 控件在 wpf 表单中托管 winform。

在单独的测试应用程序中一切都很好。但是当我试图在完整的大型 wpf 应用程序中执行此操作时,winform 加载为空,vb 屏幕闪烁然后立即消失。

有什么可行的解决办法???

请帮忙..真的很着急。

谢谢。

PS:如果有人有更好的方法在 wpf 中嵌入 vb6 ...我想听听。

尼里亚

0 投票
1 回答
414 浏览

.net - Outlook:如何在没有绘画问题的情况下设置父级(_form.Handle,Outlook.Handle)?

我想将 Outlook 的顶级窗口句柄设置为我的加载项中设置表单的父级(因此它显示在顶部,保留在 Outlook 中等)。

在其他 Office 应用程序中使用 SetParent 工作正常,但在 Outlook 中出现呈现错误。当 Outlook 是父级时,表单无法正确重新绘制(因此,如果我将其拖动或单击并返回,则 Outlook 的其他部分将绘制在其顶部)。

我所做的任何 Invalidate-ing 都会被忽略。

有人知道一个好的解决方案吗?谢谢!

编辑:我要添加的表单是 .Net 表单,这可能是问题的一部分。

0 投票
2 回答
2358 浏览

delphi - 分配给 Setparent(..) 后 Showmodal 中的问题

我创建了两个应用程序 MainApps 和 SubApps,SubApps 有一个模式类型对话框,例如登录/注销表单等,并且工作正常。

将它附加到 MainApps 后,模态对话框显示为正常的框形式。它的行为类似于“DIALOG.SHOW”而不是“DIALOG.SHOWMODAL”;

我正在使用delphi编译器

子应用按钮点击;

MainApps 按钮单击

0 投票
5 回答
11776 浏览

c# - 使用 SetParent() 时出现问题定位窗口

我正在尝试childForm通过 PInvoke 使用 SetParent API 设置为主 Excel 窗口的子窗口:

正如您在上面看到的,我的意图也是将孩子定位在 Excel 窗口的左上角。然而,由于某种原因,它childForm总是在某个奇怪的位置结束。

我做错了什么?

0 投票
3 回答
5533 浏览

wpf - 使用 WIn32 SetParent() 在非 WPF 应用程序中托管 WPF 应用程序

我有一个 WPF 应用程序,我希望它看起来像是托管在另一个 - 非 WPF - 应用程序中。在现实生活中,这个非 WPF 应用程序是 Internet Explorer 中的 ActiveX,但为了说明问题,我使用了一个简单的 Windows 窗体应用程序。

我使用 Windows API 函数 SetParent,它已经有几十个线程。但是,我找不到任何关于我的确切问题的内容:WPF 应用程序右侧和底部的一个小区域未绘制在非 WPF 应用程序的 window 内

自行运行的 WPF 窗口:
替代文字

以 WinForm 应用程序的窗口为父窗口的 WPF 窗口:
替代文字

如果将 WPF 应用程序与 WinForms 应用程序或普通 Win32 应用程序(如记事本)交换,我不会遇到此问题。

WinForm 代码如下所示:

注意:我知道 SetParent 的这种使用不一定是推荐的做法,但我想并且需要了解如何这样做,所以请让我 :)

0 投票
1 回答
254 浏览

outlook - 如何在 Outlook Mailgrid 上设置 CustomControl?

我正在尝试使用 SetParent 设置对 Outlook Mailgrid 的控制并调整大小(MoveWindow),并在 Mailgrid 更改时使其无效。

这有效,但在调整大小时,控件会开始闪烁。

我的控件是 Outlook 的 Mailgrid 的替代品。要更改邮件预览,我只需通过我的控件更改原始邮件网格的选择。

我的控件的父级是 Outlook 主窗口。我已经尝试关闭 Mailgrid 窗口,但这没有帮助。

如果我将 Mailgrid 设置为父级,则闪烁停止,但在这种情况下,如果我更改选择,它会闪烁,并且无法控制邮件搜索窗口。

有人知道如何阻止极端闪烁吗?

处理 Outlook 邮件网格消息更改的类

创建事件侦听器和控件并将其设置为父级

改变事件

我的控制绘画

/// 编辑

将 a 添加Thread.Sleep(1000)到 DoPaint 方法后,我能够看到绘制顺序。调整大小后,我的控件会立即显示,然后 Outlook 邮件网格会覆盖我的控件。我试过设置base.WndProc(ref m);OnChange();但没有任何改变。我希望这有助于解决问题。

/// 编辑

经过一些测试后,我尝试收听所有 Outlook 窗口,Graphics.Clear它们都是橙色的。我不知道为什么,但即使这样也行不通。在调整大小时,几乎所有内容都是由前景绘制的。

0 投票
2 回答
1797 浏览

c# - 由 SetParent API 创建的 MDI 子重绘问题

我有一个用 C 编写的遗留应用程序,它由一个主窗口和几个从菜单选项打开的 mdi 子窗口组成。为了允许用 C# 编写新的 mdi 子级,我创建了一个 C++ COM 互操作层,该层由 C 代码调用,然后调用 C# 代码。然后,我使用 SetParent API 将 C 主窗口设置为打开的任何 C# 窗口的新父窗口。这似乎可行 - C# 窗口的行为类似于主窗口的 MDI 子窗口。但是,子窗口无法正确绘制,如果您将其他窗口移到它上面或将其移动到主窗口的边缘,它只会变得更糟 - 它会被其他窗口的一部分绘制或在移动时留下一些自身的碎片. 此外,屏幕的响应不是很好,例如,您无法从一个文本框切换到另一个文本框。

请不要质疑我的解决方案的架构(相信我,这是唯一的方法),但是如果您曾经遇到过由 SetParent 创建的孩子的此类问题,我很想听听您是否设法解决了它.

0 投票
1 回答
2949 浏览

vb.net - 表单上 SetParent() 的托管方法

如何将表单显示为不在我的程序中的窗口的子窗口?

我有一个应该是父级的窗口句柄,但我没有在表单上看到 SetParent() 的任何托管方法。有吗?该form.Show()方法似乎也只接受实现 IWin32Window 的托管对象。

如果没有托管方法,那么声明 API 以最大程度地兼容未来系统的首选方法是什么?像这样?:

是否可以构建一个实现 IWin32Window 并以某种方式包装窗口的类?这样做会很方便,但我不熟悉 IWin32Window:

0 投票
1 回答
1607 浏览

c++ - CDialog ShowWindow问题

我有一个 SDI 应用程序。在应用程序中有一个无模式对话框,用于显示一些消息,例如在工作期间与服务器通信。问题是,当对话框的父窗口设置为主框架时,ShowWindow 方法无法按预期工作。似乎对话框被主框架覆盖。如果我在 ShowWindow 调用旁边放置一个 Sleep 调用,我可以看到该对话框。当睡眠结束时,对话框消失。如果我不设置对话框的父级,则 ShowWindow 调用正常工作。但我确实想设置对话框的父窗口。那么如何解决呢?