ホーム ATL/WTL
はじめに
ドキュメント種別 ATL/WTL に関する文書
最終更新日 2004/08/06
PR
 本ドキュメント「ATL/WTL」は、Microsoftが提供しているテンプレートライブラリであるATL(Active Template Library)と、 オープンソースのテンプレートライブラリであるWTL(Windows Template Library)を使ったWindowsプログラミングについてのドキュメントです。 以下にATLとWTLの概要を示します。

  • ATLとは
    ATL(Active Template Library)とは、VisualC++に付属するテンプレートライブラリです。 主にCOMをサポートするライブラリとして知られていますが、 Windowsプログラミングを簡略化するクラスも備えています。 そのようなクラスを使用する場合は必ずしもCOMの知識は必要ありません。

  • WTLとは
    WTL(Windows Template Library)とは、 主にWindowsのGUI部分(コントロール、コモンダイアログ、コマンドバー、ペインコンテナなど)をサポートするテンプレートライブラリで、 ATLの拡張ライブラリと言えます。 元々Microsoftが無料で提供(ただし正式なサポートは無し)していましたが、 2004年5月にオープンソース化されました。 ATLと同様、Win32APIをラッパクラスで覆うことにより、 Windowsプログラミングを簡略化します。

ATL/WTLプログラミングの特徴
 ATLおよびWTLはその名の通りC++テンプレートをベースにしており、 オーバーヘッドが非常に低いという特徴があります。 また、MFCのような共有DLLを別途必要としません。 以下に、ウィンドウ中央に「Hello, World」と表示するだけの簡単なプログラムの 実行ファイルサイズを比較した表を示します。なお、すべてWin32 Applicationプロジェクトで 作成し、MFCの場合だけMFCスタティックライブラリを使用するように設定を変更します。 残りの設定はデフォルトのままです。

SDK ATL MFC
36KB 36KB 88KB

 ATL/WTLプログラミングではMFCと違い、WinMain()を隠蔽せず、Document/Viewアーキテクチャでもありません。 しかし、ATL/WTLで使われるクラスのメンバ関数名などは、MFCのメンバ関数名と同じものが多々あります。 それゆえ、SDKスタイルのWindowsプログラミングとMFCの両方の経験があるとより理解しやすいでしょう。 なお、本ドキュメントはそれらの基本的な知識があることを前提としています。

 最後に、本ドキュメントの作成はATL/WTLプログラミングの学習と同時進行であるため、 更新は不定期で行われることをご了承ください。また、できる限り情報の正確性に注意を払う つもりですが、必ずしもその内容を保証するものではありません。