2015-03-18 1 views
3

Dans chaque exemple WTL, CoInitialize est appelée en tant que première fonction de WinMain. Je sais que WTL est basé sur ATL, qui est étroitement lié à COM, mais comme je le vois, un programme WTL peut facilement utiliser aucun code COM (n'est-ce pas?).Est-ce que COM est une exigence pour WTL?

Ce qui ajoute à la confusion est que ATL a des classes telles que CComCriticalSection, qui n'a rien à voir avec COM, malgré le nom.

Donc ma question est: est-il nécessaire d'appeler CoInitialize dans un programme WTL, même quand aucun COM n'est explicitement utilisé?

Répondre

7

Non, CoInitialize n'est pas une exigence pour une application WTL. De nombreuses classes WTL ne sont pas liées à COM. Historiquement, comme vous l'avez mentionné, WTL était étroitement connecté à ATL, qui était à son tour un cadre principal pour le développement COM, et l'initialisation COM était une étape naturelle car l'application était susceptible de faire quelque chose avec COM de toute façon.