Windows Template Library
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/04/19 04:48 UTC 版)
ナビゲーションに移動 検索に移動開発元 | Microsoft |
---|---|
最新版 | 10.0.8356 / 2018年12月22日 |
リポジトリ |
git |
プログラミング言語 | C++ |
対応OS | Microsoft Windows |
種別 | ライブラリ |
ライセンス | Common Public License / Microsoft Public License |
公式サイト |
sourceforge |
Windows Template Library (WTL) はマイクロソフトによるWin32をラップ(カプセル化)するオブジェクト指向のC++ライブラリ。WTLはプログラマが利用するAPIの1つである。MFCの軽量な代替として開発された。WTLはマイクロソフトのATL(COMやActiveXのためのもう1つの軽量API)を拡張する。
概要
WTLは、小さくて高速なコードという大きな利点のあるATLに対して、アプリケーションや様々なUIコンポーネントの両方のために、より複雑なユーザーインターフェイスをサポートするようにATLを拡張するクラスのセットである。WTLのクラスは、ATLベースのアプリケーション、サーバ、コンポーネント、コントロールに対して、リッチなWin32ベースのUIを実装するための最適かつ簡単な方法であるように設計された。
WTLは、フレームやポップアップウィンドウを初めとして、MDI、標準・コモンコントロール、コモンダイアログ、プロパティシートやページ、GDIオブジェクト、UIのアップデート、スクロールバーウィンドウ、スプリッターウィンドウ、コマンドバーなど、様々なユーザーインターフェイスの要素をサポートする。WTLのクラスは主にテンプレートであり、最小限のインスタンスデータとインライン関数を使う。これらはフレームワークとしてデザインされたものではないため、特定のアプリケーションモデルを強制せず、どのようなスタイルでも受け入れられる。クラスはフックやスレッドローカルのメモリ領域を利用しないのでこれらのテクニックの押しつけに制約されない。これらには従属関係が無く、ストレートなSDKのコードと自由に混ぜることができる。要するに、WTLは、より論理的でオブジェクト指向的なモデルをプログラマに提供しつつも、SDKによるプログラムと比べてもサイズとスピードでほとんど遜色のない非常に小さくて効率的なコードを出力する。
WTLの多くのAPIは標準のWin32と直接的に対応しており、多くのWindowsプログラマーにとってなじみの深いインターフェイスである。しかしながらマイクロソフトによる公式のドキュメントは存在せず、この問題に立ち向かうため"WTL Documentation"プロジェクト[1]がスタートしたが、現在[いつ?]でもまだドキュメントは完全ではない。
歴史
マイクロソフトは2004年5月、オープンソースライセンスに基づいてWTLのソースコードを自由に利用できるようにした。マイクロソフトはSourceForge.netというインターネット上のオープンソースコードのためのリポジトリにソースコードを投稿し、Common Public Licenseに基づいてリリースした。このライブラリはバージョン7.5の時点で、Microsoft Permissive Licenseとのデュアルライセンスでもあった[2]。
プログラム例
Hello worldを表示するプログラムである。
#include <windows.h>
//ATLヘッダ
#define _ATL_NO_AUTOMATIC_NAMESPACE
#include <atlbase.h>
#include <atlwin.h>
//WTLヘッダ
#define _WTL_NO_AUTOMATIC_NAMESPACE
#include <atlapp.h>
#include <atlcrack.h>
class HelloWindow : public ATL::CWindowImpl<HelloWindow>
{
public:
// ウィンドウクラス名を登録
DECLARE_WND_CLASS(TEXT("HelloWindow"));
private:
// メッセージマップ
BEGIN_MSG_MAP(HelloWindow)
MSG_WM_PAINT(OnPaint)
MSG_WM_DESTROY(OnDestroy)
END_MSG_MAP()
// 描画メッセージ
void OnPaint(HDC)
{
WTL::CPaintDC dc(m_hWnd);
dc.TextOut(10, 10, TEXT("Hello, world"), -1);
}
// ウィンドウが破棄されるメッセージ
void OnDestroy()
{
PostQuitMessage(0);
}
};
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int nCmdShow)
{
// ウィンドウのインタンスを生成
HelloWindow wnd;
if (!wnd.Create(NULL, ATL::CWindow::rcDefault, TEXT("Hello, world"), WS_OVERLAPPEDWINDOW))
{
return -1;
}
// ウィンドウ表示
wnd.ShowWindow(nCmdShow);
wnd.UpdateWindow();
// メッセージループ
WTL::CMessageLoop msgLoop;
return msgLoop.Run();
}
関連項目
外部リンク
- SourceForgeのWTLプロジェクト
- WTL 8.0 マイクロソフトのダウンロードページ
- WTL Documentation - WTLプログラミングライブラリのドキュメント作成運動。
- Using the Windows Template Library Part 1、Part 2 - GameDev.net
- WTL for MFC Programmers - The Code Project – WTLを使い始めたいMFCプログラマーのための入門集。
- The WTL Wiki - WTLのためのwiki。
|
|
Windows Template Library (WTL)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/03/07 20:30 UTC 版)
「Windows API」の記事における「Windows Template Library (WTL)」の解説
ATLの拡張として作られた軽量のWindows APIのラッパー。現在[いつ?]はCPLに基づくオープンソースとなっている。
※この「Windows Template Library (WTL)」の解説は、「Windows API」の解説の一部です。
「Windows Template Library (WTL)」を含む「Windows API」の記事については、「Windows API」の概要を参照ください。
「Windows Template Library」の例文・使い方・用例・文例
固有名詞の分類
ライブラリ (プログラミング) |
標準Cライブラリ EISPACK Windows Template Library Intrinsics PARI/GP |
マイクロソフトのAPI |
Web プラットフォーム インストーラー WinG Windows Template Library Microsoft Windows Installer Background Intelligent Transfer Service |
C++ |
Typedef ワイド文字 Windows Template Library Intel C++ Compiler 標準C++ライブラリ |
- Windows Template Libraryのページへのリンク