tl;dr:
En supposant que je suis seulement à l'aide de leur "normal" du programme avec une interface graphique (pas de COM, pas de ActiveX, rien de compliqué), quelle est la différence fondamentale que je vais voir entre ATL, MFC, pour m'aider à comprendre lequel utiliser?
J'ai fait quelques recherches sur le web, mais en fin de compte aucune des réponses vraiment répondu à ma question:
-
http://msdn.microsoft.com/en-us/library/bk8ytxz5(v=vs. 80).aspx:
-
"ATL est un moyen rapide et facile de créer un composant COM en C++ et de maintenir un faible encombrement. Utiliser ATL pour créer un contrôle si vous n'avez pas besoin de toutes les fonctionnalités intégrées MFC fournit automatiquement."
N'a pas vraiment répondu à ma question, parce que:
Je ne travaille pas avec COM.
Est ce que cela implique MFC n'est pas rapide? Pourquoi/comment?
-
"MFC vous permet de créer des applications complètes, les contrôles ActiveX et les documents actifs. Si vous avez déjà créé un contrôle avec les MFC, vous voudrez peut-être continuer le développement dans le MFC. Lors de la création d'un nouveau contrôle, pensez à utiliser ATL si vous n'avez pas besoin de tous les MFC est une fonctionnalité intégrée."
Aussi ne répond pas à ma question, parce que:
Je n'ai pas vraiment savoir quoi ActiveX est en premier lieu.
Il semble que Microsoft est en décourageant l'utilisation des MFC, mais je ne peux pas comprendre pourquoi.
Qu'est-ce exactement est MFC "built-in fonctionnalité de" ATL ne fournit pas?
En général, cela ne veut pas répondre à ma question, car elle n'explique pas les inconvénients et les raisons derrière eux.
-
parce que, directement ou indirectement, tout semble aller pour le lien de retour à la page précédente:
-
Comment puis-je décider d'utiliser ATL, MFC Win32 ou CLR pour un nouveau projet C++?
-
"ATL & MFC sont un peu plus difficile de décider entre les deux. [[Sans blague!]] Je vous renvoie à MSDN de la page pour choisir pour choisir l'un d'entre eux."
Évidemment, cela ne veut pas répondre à ma question. :)
-
http://www.codeguru.com/forum/archive/index.php/t-64778.html
etc.
Ce que j'ai observé actuellement (dans les deux derniers jours, tout en essayant d'apprendre les deux):
- ATL est basée sur des modèles, ou au moment de la compilation du polymorphisme.
- ATL méthodes ont tendance à être non-virtuel, et ont tendance à retourner des références.
- MFC est basée sur des méthodes virtuelles, ou polymorphisme de l'exécution.
- MFC méthodes ont tendance à être virtuel, et ont tendance à renvoyer les pointeurs.
Mais il ne semble pas être n'importe quel différence entre eux:
- Les deux des messages, des cartes (
BEGIN_MSG_MAP
vsBEGIN_MESSAGE_MAP
... la belle affaire) - Les deux envelopper Win32 méthodes dans les classes
- Les deux semblent avoir des catégories similaires
CWnd
vsCWindow
Mais alors, si il n'y a pas vraiment de différence, sauf pour la compilation vs run-temps, alors pourquoi faire les deux? Ne devrait pas être suffisant?
Ce qui me manque ici?