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

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

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

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

Win32API版 ATL版 MFC版
サイズ 5KB 16KB 119KB
プロジェクトファイル HelloWin32.zip HelloATL.zip HelloMFC.zip

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

 最後に、本ドキュメントの作成はATL/WTLおよび Windows Mobile プログラミングの学習と同時進行であるため、 更新は不定期で行われることをご了承ください。また、できる限り情報の正確性に注意を払う つもりですが、必ずしもその内容を保証するものではありません。 なお、本ドキュメントでは、プログラムの動作確認をデバイスエミュレータで行い、 対象OSは Windows Mobile 6/6.1/6.5 Professional を想定しています。 実機によっては動作が異なる可能性があります。