【问题标题】:Windows API Wrapper for .Net?.Net 的 Windows API 包装器?
【发布时间】:2010-10-20 23:27:38
【问题描述】:

Windows API


所以我知道 WinForms 有点涉及 Windows API,但坦率地说,它很可怕。特别是分层窗口和闪烁。所以我想知道是否有人为 Windows API 编写了部分或完整的包装器。我对分层窗口方面特别感兴趣,但实际上 API 的任何部分都是一个很好的起点。

更新:我在这里找到了 Windows API 代码包:http://code.msdn.microsoft.com/WindowsAPICodePack,但它似乎不包含分层 Windows?我的假设是否正确?

本机 API (Windows)


我听说过一些关于 Native API 的事情,但我不太清楚它的用途是什么?它提供了哪些功能?调查一下是个好主意吗?

摘要(简而言之问题)


  1. 有人知道现有的(部分或全部)Windows API 包装器吗?
    • 如果第一个问题的答案是否定的,那么哪里是我自己了解它并可能自己编写的好资源?
  2. Native API 的解释?它有什么作用?我可以用它来改进应用程序吗?我什至可以使用它吗?

非常感谢您对其中任何一个的回答 :) 谢谢

【问题讨论】:

  • 注意在托管环境之外执行代码的危险。还有你这样做之后缺乏可移植性。
  • @Aren:注意到了。 @Ferruccio:我曾多次使用 WPF,只是没有时间也不想将我所有的项目都转换为它。
  • 并不是说我完全支持Ferruccio,但是你可以串联使用winforms/wpf,一次慢慢地转换app 1 control/form(window)。

标签: c# winapi wrapper


【解决方案1】:

你可以从PInvoke.NET开始。

【讨论】:

  • 我想这个广泛的答案是你能从如此广泛的问题中得到的最好的答案。
【解决方案2】:

LayeredWindows 实际上在 WinForms 中比在 windows 中工作得更好。 原生窗口控件甚至没有 WinForms 类似物的 alpha 通道支持,因此原生窗口会闪烁,并且需要大量子类化来覆盖绘画以使用 alpha 兼容例程。

你最好去 WPF。 Windows 团队根本没有很好地处理本机控件,甚至在启用航空玻璃时删除对样式 (WS_EX_COMPOSITED) 的支持,考虑到 Windows 控制绘制的方式,有效地使任何应用程序都无法绘制如果它使用子窗口作为控件,则不会闪烁。

WPF “绘制”窗口控件,但不使用离散(本机)子窗口来表示单个控件。这使它可以控制何时以及如何渲染其窗口表面。

【讨论】:

    【解决方案3】:

    Windows API 非常庞大。里面有很多东西。 Windows 窗体是其中一部分的包装器。 WPF 是其中一部分的包装器。基类库的一部分(例如 System.IO.*)是其中一部分的包装器。 Code Pack 是专门针对 Vista 和 Windows 7 中的新事物的包装,而不是 Windows 窗体或 WPF 中的新事物。

    你研究过 WPF 吗?结合特定 API 函数的 P/Invoke,它可能会带你走很长一段路。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-26
      • 1970-01-01
      • 2010-10-26
      相关资源
      最近更新 更多