Y a-t-il des différences fondamentales dans le Winapi / Win32? Existe-t-il des connaissances supplémentaires nécessaires pour tirer parti des nouvelles fonctionnalités du système d'exploitation? P>
Y a-t-il des pièges que quelqu'un qui a codé Win32 applications dans le passé pourrait tomber? P>
Je ne parle pas de Silverlight, c'est une boule de cire complète. (Je n'ai pas encore le VS qui soutient cela au travail.) P>
EDIT: Drew a une assez bonne réponse jusqu'à présent, mais ce qui est essentiel pour qu'un programmeur sache? C'est-à-dire ce qui devrait être dans une annexe du livre de Charles Petzold? (Théoriquement) p>
5 Réponses :
rien de spécial. Les vieux trucs vont à peu près comme il l'a fait. Il y a quelques nouvelles API, mais rien de la terre brise (et suivant les anciennes conventions Win32). Donc, tout ce que vous savez de Vista est toujours vrai pour Win7. P>
Maintenant, il existe de nouvelles directives concernant l'expérience utilisateur (écran tactile, bibliothèques (trucs d'expérience utilisateur, sans programmeur)), mais le style API est identique. P>
En ce qui concerne la liste Windows 7 dans votre lien, ne le prenez pas aussi complet. Cela ne mentionne pas les interfaces COM, par exemple, il s'agit donc d'un sous-ensemble plutôt trivial de ce qui est réellement nouveau.
Y a-t-il une ressource plus divinative?
Il y a bien sûr beaucoup de nouvelles API que vous devriez être conscient de vous assurer que vous avez les outils dont vous avez besoin. Au-delà de cela, il y a quelques modifications à noter. P>
changements philosophiques strong> Vous voudrez peut-être également prendre note du nouveau style API si vous écrivez vos propres bibliothèques, ce qui est un peu plus cohérent et évite les choses comme la notation hongroise. P>
Plus précisément, une API de «remplacement» est direct 2D, qui est une API de style DirectX pour UIS. Si vous écriez le code graphique pour Windows 7, vous devez envisager Direct2D sur GDI, qui dispose d'un modèle de programmation compatible avec, mais très différent de GDI. Direct 2D peut être porté à Vista. P>
Aussi, au lieu d'utiliser le menu de style Win32, envisagez d'utiliser le ruban, qui sera disponible pour Vista ainsi que Win7. P>
Si vous utilisez la bibliothèque Commandes commune, assurez-vous d'utiliser V6, pas la valeur par défaut de V5. P>
Enfin, assurez-vous que vous n'appelez pas inutilement des choses qui nécessitent des privilèges d'administration, comme cela invitera UAC. P>
Tout ce que je peux penser pour le moment. P>
De grandes parties des anciennes API Win32 se sont concentrées sur des API de style C où des poignées ont été transmises. De nos jours, la plupart des nouvelles API étant développées sont basées sur COM, ainsi de désaccord sur COM et ATL en valant la peine. P>
Généralement, ne supposez pas que les méthodes que vous connaissiez il y a environ 10 ans sont toujours à la pointe de la technologie; Ils existent tous tous, alors vous ne serez pas nécessairement dit que vous le faites mal. Vérifiez MSDN pour voir si cela vous fait référence à quelque chose de mieux et utilisez le dernier SDK afin que vous obteniez des avertissements de dépréciation pour certaines fonctions. Surtout, assurez-vous que les fonctions de chaîne que vous utilisez sont sécurisées. P>
J'imagine qu'ils recommandent d'utiliser les rubans, mais ils ne le nécessitent pas non? Je ne me soucie vraiment pas de "regarder et sensation" du nouveau bureau. Cela ne se sent pas comme une interface propre pour moi.
Le GDI était une bibliothèque lente, c'est agréable de la voir être remplacée. C'était presque comme si ils essayaient de rendre le GDI lent. Il a fallu que l'OSX d'Apple a déclaré qu'il utilisait une excellence matérielle avant que Microsoft ne décide de réparer leur propre logiciel de freaking lent.
@Pete: Les anciens barres d'outils et les menus sont toujours là, oui.
"Toutes les nouvelles API étant développées sont basées sur com." Ce n'est vraiment pas le cas.
@Mihai: ContreXamples? Je ne doute pas de toi, mais tous ceux que je connaissais sont com - shell, étage de l'appareil, ruban, animation, D2D, capteur et emplacement.
Direct2D remplace également DirectDraw, si je me souviens.
Vous avez le choix: C / C ++ traditionnel ou utilisez le nouveau .NET Framework Langues (c # / vb.net / python.net et plus). Pour ce dernier, sachant que le cadre est plus important que la mise en œuvre. Vous êtes isolé (en général) des pointeurs, de la filetage, des tampons et de la gestion de la mémoire et mis à part quelques différences de syntaxe une fois que vous connaissez le cadre, il est portable entre les langues (c.-à-d. Vous pouvez facilement choisir la programmation VB.NET si vous êtes Un gars C # au maximum de ce que vos applications feront est d'appeler des parties du cadre). Vous pouvez créer une classe en C #, l'utiliser dans un programme VB.NET et référencer la même classe d'une cmdlet PowerShell par exemple. P>
Les interfaces CLIM-style C sont toujours pour Win32, mais à moins que vous ne disposiez d'un besoin spécifique de les utiliser (code hérité, X, pilotes de périphérique, par exemple) Je regarderais les choses plus récentes. Quant à des choses comme WPF, il n'y a même pas une route directe dans le code non géré par Via non gérés - vous devez sauter à travers toutes sortes de cerceaux interopers laids. P>
Niveaux d'intégrité est également une bonne chose à en apprendre. Selon la nature de votre candidature, s'il tente de faire quoi que ce soit impliquant d'autres processus qui fonctionnent sur le système d'exploitation, il est important de savoir à ce sujet. Cette technologie empêche les processus à un niveau d'intégrité plus faible d'interagir avec des processus qui fonctionnent à un niveau d'intégrité plus élevé. Cela inclut la messagerie, les crochets, l'injection de la DLL, les poignées d'ouverture et de nombreuses autres techniques. P>
Peut-être que je n'aurais pas dû poster cela un week-end. Pas beaucoup de vues.
N'est-ce pas le nom de ce type Charles Petzold?
Juste une note que je trouve que certaines des nouvelles API peuvent être appelées de C ++ mais pas de C, du moins pas sans tracas.
ShgetnownFolderDederPath () Code> Est-ce celui que j'ai du mal à faire pour le moment.