Windows Template Libraryとは? わかりやすく解説

Windows Template Library

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/05/12 17:06 UTC 版)

Windows Template Library
開発元 Microsoft
最新版
10.0.10320 / 2020年11月16日 (4年前) (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はマイクロソフトのATLCOMActiveXのためのもう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();
}

関連項目

外部リンク





固有名詞の分類

このページでは「ウィキペディア」からWindows Template Libraryを検索した結果を表示しています。
Weblioに収録されているすべての辞書からWindows Template Libraryを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からWindows Template Library を検索

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Windows Template Library」の関連用語

Windows Template Libraryのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Windows Template Libraryのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのWindows Template Library (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS