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

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 プロジェクト」で作成し、 プロジェクトのプロパティで[ランタイム ライブラリ]を[マルチスレッド (/MT)]に設定します。 MFCの場合だけ[MFC の使用]を[スタティック ライブラリで MFC を使用する]に設定します。 残りの設定はデフォルトのままです。

Win32API版 ATL版 MFC版
サイズ 48KB 72KB 176KB
プロジェクトファイル HelloWin32.zip HelloATL.zip HelloMFC.zip

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

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