4

我正在做 ac#Project。

我想知道:C# .Net 中哪个命名空间包括 hWnd、tWindowPlacement、TAboutBox?

4

3 回答 3

4

我认为您是 .NET 的新手,也许还有 UI 库?在 .NET 中创建 UI 与旧的 Windows C 'Win32' API 不同。

就像 Jon 提到的,.NET 和它的 UI 库不使用这些项目。除了窗口句柄(即 HWND)之外,还有负责用户界面的类,您可以实例化和使用它们。例如,在经典的 .NET 中,窗口大多被 System.Windows.Forms 命名空间中的 UI 元素替换。要显示对话框,您将构建一个表单,并最终在表单上调用 .Show() 来显示它。您的代码最终将包含一个指向 Form 的面向对象实例的变量。没有代码可以为您返回该表单的 HWND。与 Win32 相比,它确实是一种更好的 UI 编码方式。

还有其他库用于显示 .NET 可以访问的 UI,例如我最喜欢的 Windows Presentation Foundation (WPF)。Silverlight 也是,虽然我对 Silverlight 不了解更多。

如果您打算学习一般的.NET,那么我建议您在这里提出很多问题,并获得一些书籍。我可以推荐 Jeffrey Richter 的第一本书,名为“CLR via C#”。当然其他人也可以提出很好的建议,但是那本书是我多年前读的。当然,经常回来这里提问和寻找答案。

祝您在学习 .NET 的道路上好运!

于 2012-09-08T08:19:01.303 回答
1

为了在 C# 中获取窗口句柄或 hWnd,您只需要返回MainWindowHandlea Process,如下所示:

    public static IntPtr FindWindowByProcessId(int dwProcessId)
    {
        Process proc = Process.GetProcessById(dwProcessId);
        return proc.MainWindowHandle;
    }

您可以GetWindowPlacement使用平台调用访问:

[DllImport("user32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] internal static extern bool GetWindowPlacement(IntPtr hWnd, out WINDOWPLACEMENT lpwndpl);

我猜 TAboutBox 就是一个对话框,或者MessageBox在 C# 中。

于 2012-09-08T10:16:58.517 回答
0

对于 hWnd,您可以使用System.IntPtr结构 - 其他。TAboutBox 听起来像一个 Delphi 或 C++Builder 类......

于 2012-09-08T08:19:55.860 回答