Windows-API für VISTA, 7 und darüber hinaus

8

Gibt es grundlegende Unterschiede in WinAPI / Win32? Gibt es zusätzliches Wissen, das benötigt wird, um die Vorteile neuer Betriebssystemfunktionen zu nutzen?

Gibt es irgendwelche Fallstricke, in die jemand, der in der Vergangenheit Win32-Apps codiert hat, fallen könnte?

Ich spreche nicht über Silverlight, das ist eine ganz andere Kugel aus Wachs. (Ich habe noch nicht die VS, die das bei der Arbeit unterstützt.)

Bearbeiten: Drew hat bisher eine ziemlich gute Antwort, aber was ist wichtig für einen Programmierer? d. h. Was sollte in einem Anhang zu Charles Petzolds Buch enthalten sein? (Theoretisch)

    
NoMoreZealots 19.07.2009, 01:03
quelle

5 Antworten

14

Natürlich gibt es viele neue APIs, die Sie beachten sollten, um sicherzustellen, dass Sie die Tools haben, die Sie benötigen. Darüber hinaus sind einige Änderungen zu beachten.

Philosophische Veränderungen
Große Teile der alten win32-APIs konzentrierten sich auf APIs im C-Stil, in denen Handles weitergegeben wurden. Heutzutage sind viele der neuen APIs, die entwickelt werden, COM-basiert, so dass es sich lohnt, auf COM und ATL aufzubauen.

Sie sollten auch den neuen API-Stil beachten, wenn Sie Ihre eigenen Bibliotheken schreiben, was etwas konsistenter ist und Dinge wie die ungarische Notation vermeidet.

Ersatz
Im Allgemeinen sollten Sie nicht davon ausgehen, dass die Methoden, die Sie vor 10 Jahren kennen, immer noch Stand der Technik sind. sie existieren immer noch, also wird dir nicht unbedingt gesagt, dass du es falsch machst. Überprüfen Sie MSDN, um festzustellen, ob es Sie auf etwas Besseres verweist, und verwenden Sie das neuste SDK, so dass Sie für einige Funktionen veraltete Warnungen erhalten. Stellen Sie insbesondere sicher, dass die von Ihnen verwendeten Zeichenfolgenfunktionen sicher sind.

Eine einzige "Ersatz" -API ist Direct 2d, eine DirectX-API für UIs. Wenn Sie Grafikcode für Windows 7 schreiben, sollten Sie Direct2d über GDI in Betracht ziehen, das über ein Programmiermodell verfügt, das zwar mit GDIs kompatibel, aber auch völlig anders ist. Direct 2d kann zurück nach Vista portiert werden.

Außerdem sollten Sie anstelle der Win32-Menüführung die Multifunktionsleiste verwenden, die sowohl für Vista als auch für Win7 verfügbar ist.

Wenn Sie die Bibliothek für allgemeine Steuerelemente verwenden, achten Sie darauf, v6 zu verwenden, nicht den Standardwert von v5.

Stellen Sie abschließend sicher, dass Sie nicht unnötigerweise Dinge aufrufen, für die Administratorrechte erforderlich sind, da dies die Benutzerkontensteuerung veranlassen wird.

Alles, woran ich jetzt denken kann.

    
Drew Hoskins 19.07.2009, 02:20
quelle
3

Es gibt neue APIs für jedes.

Es gibt zusätzliches Wissen, obwohl es vielleicht nicht erforderlich ist. Sie sollten mit der Entwicklung von 64-Bit- und Multi-Threading-Anwendungen vertraut sein, um nur einige zu nennen. Die höheren Ebenen Konstrukte wie Direct2D, .NET etc., etc., erfordern die Anpassung in Wissen, nicht unbedingt die unteren Ebenen APIs.

    
user113476 19.07.2009 01:09
quelle
2

Sie haben die Wahl: traditionelles C / C ++ oder verwenden Sie die neueren .NET Framework-Sprachen (C # / VB.net / Python.net und mehr). Für letztere ist es wichtiger, die Rahmenbedingungen zu kennen als die Implementierung. Sie sind isoliert (im Allgemeinen) von Zeigern, Threading, Puffern und Speicherverwaltung und abgesehen von ein paar Unterschieden in der Syntax, wenn Sie das Framework kennen, das zwischen den Sprachen portierbar ist (dh Sie könnten einfach die VB.net-Programmierung übernehmen) ein C # -Typ, da die meisten Apps nur Teile des Frameworks aufrufen. Sie können eine Klasse in C # erstellen, sie in einem VB.net-Programm verwenden und beispielsweise auf dieselbe Klasse aus einem Powershell-Cmdlet verweisen.

Die C-Schnittstellen im alten Stil sind immer noch für Win32 da, aber wenn Sie keine spezielle Notwendigkeit haben, sie zu benutzen (Legacy-Code, Direct X, Gerätetreiber zum Beispiel), würde ich mir die neueren Sachen ansehen. Was Dinge wie WPF betrifft, gibt es nicht einmal eine direkte Route in via nicht verwaltetem Code - Sie müssen durch alle möglichen hässlichen Interoperabilitäts-Schleifen springen.

    
Simon 12.08.2009 10:17
quelle
1

Nichts Besonderes. Das alte Zeug funktioniert so gut wie es ist. Es gibt einige neue APIs, aber nichts, was die Welt erschüttert (und den alten Win32-Konventionen folgt). Alles, was Sie von Vista wissen, ist für Win7 immer noch richtig.

Nun gibt es einige neue Richtlinien bezüglich der Benutzererfahrung (Touchscreen, Bibliotheken (User Experience Zeug, nicht Programmierer Zeug)), aber der API Stil ist der gleiche.

    
Mihai Nita 19.07.2009 01:08
quelle
1

Integrität Ebenen sind auch eine gute Sache zu lernen. Abhängig von der Art Ihrer Anwendung ist es wichtig, dass Sie etwas darüber wissen, wenn Sie versuchen, irgendetwas mit anderen Prozessen zu tun, die auf dem Betriebssystem ausgeführt werden. Diese Technologie verhindert, dass Prozesse auf einer niedrigeren Integritätsebene mit Prozessen interagieren, die auf einer höheren Integritätsebene ausgeführt werden. Dazu gehören Messaging, Hooks, DLL-Injektion, öffnende Handles und viele andere Techniken.

    
Aaron Klotz 16.12.2009 21:40
quelle

Tags und Links