Est-il judicieux, après avoir tout le bonheur d'être géré en C #, de revenir à la fenêtre de programmation de Petzold et d'essayer de produire du code avec WinAPI pur?
Que peut-on apprendre de cela? N'est-ce pas trop obsolète pour être utile?
Est-il judicieux, après avoir tout le bonheur d'être géré en C #, de revenir à la fenêtre de programmation de Petzold et d'essayer de produire du code avec WinAPI pur?
Que peut-on apprendre de cela? N'est-ce pas trop obsolète pour être utile?
Cette question est au bord de la religion :) Mais je vais donner à mes pensées, de toute façon.
Je ne vois valeur actuel de l'API Win32. La plupart, si pas tous, les bibliothèques GUI (gérés ou non) suite à des appels à l'API Win32. Même la plus approfondie sur les bibliothèques ne couvrent pas 100% de l'API, et donc il y a toujours des lacunes qui ont besoin d'être branché en direct des appels d'API ou P/invoquant. Certains des noms de la wrappers autour des appels de l'API ont des noms similaires de la sous-jacentes des appels d'API, mais ces noms ne sont pas exactement l'auto-documentation. Donc, la compréhension de l'API sous-jacente, et la terminologie qui y sont utilisés, une aide dans la compréhension de l'enveloppe d'Api et de ce qu'ils font.
De Plus, si vous comprenez la nature des sous-jacents des Api qui sont utilisés par les cadres, alors vous aurez à faire de meilleurs choix en ce qui concerne la bibliothèque de fonctionnalités que vous devez utiliser dans un scénario donné.
Cheers!
J'ai gardé standard C/C++ pour des années avant d'apprendre l'API Win32, et pour être tout à fait franc, "l'apprentissage de l'API Win32" la partie n'est pas la meilleure expérience de ma vie.
Dans une main de l'API Win32 est assez cool. C'est comme une extension de la norme API (qui a besoin d' fopen
quand vous pouvez avoir CreateFile
. Mais je suppose que UNIX/Linux/WhateverOS ont la même gizmo fonctions. De toute façon, Unix/Linux, ils ont "Tout est fichier". Dans Windows, ils ont "Tout est un... la Fenêtre" (sans blague! Voir CreateWindow
!).
Dans l'autre main, c'est un héritage de l'API. Vous aurez affaire C brutes, et des matières premières C de la folie.
void *
pointeur de certains fonction Win32.delete this ;
dans une méthode de classe).Dans la dernière main (trois mains ???), considérer que certaines personnes qui travaillent avec les Api sont eux-mêmes en utilisant le code hérité du style. Le moment où vous l'entendez "const
est pour les nuls" ou "je ne suis pas d'utiliser des espaces de noms car elles permettent de diminuer la vitesse d'exécution", ou mieux encore "Hey, qui a besoin de C++? Je code dans ma propre marque de orientée objet en C!!!" (Sans blague... Dans un environnement professionnel, et le résultat a été tout un spectacle...), vous allez sentir le genre de peur seulement condamné sentez en face de la guillotine.
Alors... dans l'Ensemble, c'est une intéressante expérience.
Après re-lecture de ce post, je vois qu'il pourrait être considéré comme trop négatives. Il n'est pas.
Il est parfois intéressant (ainsi que frustrant) pour savoir comment les choses fonctionnent sous le capot. Vous l'aurez compris, malgré les énormes (impossible?) les contraintes, de l'API Win32 équipe a fait un travail merveilleux pour être sûr de tout, de vous "olde Win16 programme" à la votre "dernier Win64 over-the-top", peuvent travailler ensemble, dans le passé, maintenant et dans l'avenir.
La question est: voulez-vous vraiment?
Parce que passer des semaines à faire des choses qui pourrait être fait (et fait mieux) dans d'autres plus haut niveau et/ou une API orientée objet peut être assez de motivation (expériences de la vie réelle: 3 semaines pour Gagner de l'API, à l'encontre de 4 heures dans les trois autres langues et/ou des bibliothèques).
De toute façon, vous trouverez de Raymond Chen Blog très intéressant en raison de sa vue de l'intérieur sur les deux Gagner de l'API et de son évolution à travers les années:
Les Api natives sont les "vrais" Api du système d'exploitation. L' .NET-library est (à quelques exceptions près) rien de plus qu'une fantaisie wrapper autour d'eux. Donc oui, je dirais que quelqu'un qui peut comprendre .NET avec toute sa complexité, peut comprendre relativement choses banales comme de parler de l'API sans le bénéfice d'un milieu-homme.
Juste essayer de le faire d'Injection de DLL à partir de code managé. Il ne peut pas être fait. Vous serez forcé d'écrire du code natif pour cela, pour le fenêtrage tweaks, pour de vrai-classement, et une douzaine d'autres choses.
Donc oui: vous doit (doivent) connaître les deux.
Edit: même si vous prévoyez d'utiliser P/Invoke.
Sur l'hypothèse que vous êtes en train de construire des applications ciblées sur Windows:
Sur l'hypothèse que vous êtes la création d'applications pour le "Web 2.0" du monde, ou qui serait tout aussi utile/utile pour *NIX & MacOS utilisateurs:
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.