.NET的Windows API封装器?

3

Windows API


我知道WinForms有一点涉及到Windows API,但是它非常糟糕。特别是在分层窗口和闪烁方面。所以我想知道是否有人已经为Windows API编写了部分或完整的封装器。我特别感兴趣的是分层窗口方面,但实际上API的任何部分都是一个好的起点。

更新:我在这里找到了Windows API Code Pack:http://code.msdn.microsoft.com/WindowsAPICodePack,但似乎它没有包装分层窗口?我是否正确地做出了这个假设?

本机API(Windows)


我听说过一些关于本机API的内容,但我不确定它是用来做什么的?它提供了哪些功能?研究它是否是个好主意?

总结(问题概述)


  1. 是否有人知道现有的(部分或完整的)Windows API封装器?
    • 如果第一个问题的答案是否定的,那么学习它自己并可能编写自己的封装器的好资源在哪里?
  2. 本机API的解释?它是做什么的?我能用它来改进应用程序吗?我是否能够使用它?

对任何一个问题的回答都会非常感激 :) 谢谢


请注意,在托管环境之外执行代码的危险性,以及在此之后缺乏可移植性。 - Aren
@Aren:已经注意到了。@Ferruccio:我已经多次尝试过WPF,只是从来没有时间和意愿将所有项目转换为它。 - caesay
虽然我并不完全支持Ferruccio,但你可以同时使用winforms/wpf,并逐步将应用程序的1个控件/窗体(窗口)进行转换。 - Aren
3个回答

5

3
我猜这个笼统的回答是你在这样一个宽泛问题中所能得到的最好答案。 - Dirk Vollmar

2
Windows API是非常庞大的,其中包含了大量的内容。Windows Forms是其中的一部分封装。WPF也是其中的一部分封装。Base Class Libraries中的某些部分(例如System.IO.*)也是其中的一部分封装。Code Pack则专门封装了Vista和Windows 7中新增的功能,而这些功能在Windows Forms或WPF中并不存在。
你是否考虑过使用WPF?结合特定API函数的P/Invoke,它可能会让你更接近你想要达到的目标。

2
分层窗口在WinForms中的表现比Windows更好。 本地的Windows控件甚至没有WinForms模拟控件的Alpha通道支持,因此本地的Windows会闪烁,并需要大量子类化来覆盖绘画以使用Alpha兼容例程。
你最好去WPF。Windows团队根本没有好好对待本地控件,甚至删除了一种样式(WS_EX_COMPOSITED)的支持,如果启用了Aero Glass,这实际上使得任何应用程序如果使用子窗口作为控件,则无法无闪烁地绘制。
WPF“绘制”窗口控件,但不使用离散(本地)子窗口来表示单个控件。这使它可以控制其窗口表面何时以及如何呈现。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接