.Net的Windows API包装器?

时间:2010-10-20 23:27:39

标签: c# winapi wrapper

Windows API


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

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

Native API(Windows)


我听过一些关于Native API的内容,但我不太确定它是什么用的?它提供了哪些功能?调查是否是一个好主意?

摘要(简而言之问题)


  1. 有没有人知道Windows API的现有(部分或完整)包装器?
    • 如果答案是肯定的问题,那么我自己应该在哪里学习它,并且可能自己编写?
  2. Native API的解释?它有什么作用?我可以用它来改善应用程序吗?我甚至可以使用它吗?
  3. 非常感谢任何人的回答:)谢谢

3 个答案:

答案 0 :(得分:4)

您可以从PInvoke.NET开始。

答案 1 :(得分:2)

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

你看过WPF吗?结合特定API函数的P / Invoke,它可能需要您走很远的路。

答案 2 :(得分:2)

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

你最好去WPF。如果启用了航空玻璃,那么Windows团队根本没有对原始控件进行良好处理,甚至取消对样式的支持(WS_EX_COMPOSITED),考虑到窗口控制绘画的方式,有效地使任何应用程序都无法绘制如果它使用子窗口作为控件,则无闪烁。

WPF“绘制”窗口控件,但不使用离散(本机)子窗口来表示单个控件。这使它可以控制窗口表面的呈现时间和方式。