在 Windows 窗体中为用户控件设置父级(一只眼睛在 Win32 窗口上!

Jiale Xue - MSFT 34,276 信誉分 Microsoft 供应商
2024-04-09T06:46:32.1633333+00:00

我有一个服务页面(实际上是一个 Win32 选项卡控制面板),我想在其中嵌入一个 C# .NET 用户控件。服务管理器应用是 Win32。作为测试,我想我会尝试将用户控件的实例父级到 Windows 窗体,不是通过将其添加到父窗体的控件集合中,而是使用 Win32 的 SetParent。但是,当我执行此操作时,我的用户控件不会显示在窗体上。

跟:

[DllImport("user32.dll")]
public static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

我写:

  if (My_User_Control_Instance == null)
  {
        My_User_Control_Instance = new My_New_User_Control();                
  }

  My_User_Control_Instance .Bounds = position;

  var result = SetParent(My_User_Control_Instance.Handle, hWnd);

其中 hWnd 是从主要形式获取的 IntPtr。处理。

着眼于这个小程序与 Win32 应用程序的最终集成,我最好的方法是什么?还是整个计划被误解了。

Note:此问题总结整理于: [Parent a user control inside a Windows Form (with one eye on Win32 window!)](https://learn.microsoft.com/en-us/answers/questions/246282/parent-a-user-control-inside-a-windows-form-(with)

Windows 窗体
Windows 窗体
一组用于开发图形用户界面的 .NET Framework 托管库。
84 个问题
Windows API - Win32
Windows API - Win32
一组适用于桌面和服务器应用程序的核心 Windows 应用程序编程接口 (API)。 以前称为 Win32 API。
43 个问题
C#
C#
一种面向对象的类型安全的编程语言,它起源于 C 语言系列,包括对面向组件的编程的支持。
112 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Hui Liu-MSFT 40,786 信誉分 Microsoft 供应商
    2024-04-09T08:17:12.62+00:00

    您要将两个窗口设置为相同的 DPI 感知模式吗?根据 SetParent60805-1.png

    如果 hWndNewParent 和 hWndChild 在不同的 DPI 感知模式下运行,则可能会出现意外行为或错误。

    退货成功了吗?如果失败,返回什么错误代码?SetParentGetLastError

    如果上述情况仍然无法帮助您解决问题,请提供可以重现问题的最小样本,以便我们帮助您深入调查此问题。


    如果答案有帮助,请点击“接受答案”并点赞。 注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。

    1 个人认为此答案很有帮助。
    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助