コンテンツにスキップ
Wikipedia

Windows Template Library

出典: フリー百科事典『ウィキペディア(Wikipedia)』
Windows Template Library
開発元 Microsoft
最新版
10.0.10320 / 2020年11月16日 (3年前) (2020年11月16日)
リポジトリ ウィキデータを編集
プログラミング
言語
C++
対応OS Microsoft Windows
種別 ライブラリ
ライセンス Common Public License / Microsoft Public License
公式サイト sourceforge.net/projects/wtl/
テンプレートを表示

Windows Template Library (WTL) はマイクロソフトによるWin32をラップ(カプセル化)するオブジェクト指向C++ ライブラリ。WTLはプログラマが利用するAPIの1つである。MFCの軽量な代替として開発された。WTLはマイクロソフトのATL(COMActiveXのためのもう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>
classHelloWindow:publicATL::CWindowImpl<HelloWindow>
{
public:
// ウィンドウクラス名を登録。
DECLARE_WND_CLASS(TEXT("HelloWindow"));
private:
// メッセージマップ。
BEGIN_MSG_MAP(HelloWindow)
MSG_WM_PAINT(OnPaint)
MSG_WM_DESTROY(OnDestroy)
END_MSG_MAP()
// 描画メッセージのハンドラー。
voidOnPaint(HDC)
{
WTL::CPaintDCdc(m_hWnd);
dc.TextOut(10,10,TEXT("Hello, world"),-1);
}
// ウィンドウ破棄メッセージのハンドラー。
voidOnDestroy()
{
PostQuitMessage(0);
}
};
intWINAPIWinMain(HINSTANCE,HINSTANCE,LPSTR,intnCmdShow)
{
// ウィンドウのインタンスを生成。
HelloWindowwnd;
if(!wnd.Create(NULL,ATL::CWindow::rcDefault,TEXT("Hello, world"),WS_OVERLAPPEDWINDOW))
{
return-1;
}
// ウィンドウ表示。
wnd.ShowWindow(nCmdShow);
wnd.UpdateWindow();
// メッセージループ。
WTL::CMessageLoopmsgLoop;
returnmsgLoop.Run();
}

関連項目

[編集 ]

外部リンク

[編集 ]
マイクロソフトのAPIとフレームワーク
グラフィック
オーディオ
マルチメディア
ウェブ
データアクセス
ネットワーク
コミュニケーション
管理
コンポーネントモデル
ライブラリ
デバイスドライバ
セキュリティ
.NET
ソフトウェアファクトリー
IPC
アクセシビリティ
テキストと多言語
サポート
低レベル
高レベル
AmigaOS対応
Mac OS/macOS対応
Windows対応
X11下のUnix対応
言語別
クロスプラットフォーム
CLI
C/C++
Objective-C
Flash
Java
デスクトップ
ウェブ
JavaScript
Common Lisp
Object Pascal
Perl
PHP
Python
Ruby
XML

AltStyle によって変換されたページ (->オリジナル) /