DrawThemeText 関数 (uxtheme.h)

ビジュアル スタイルで定義された色とフォントを使用してテキストを描画します。

構文

HRESULT DrawThemeText(
  [in] HTHEME  hTheme,
  [in] HDC     hdc,
  [in] int     iPartId,
  [in] int     iStateId,
  [in] LPCWSTR pszText,
  [in] int     cchText,
  [in] DWORD   dwTextFlags,
  [in] DWORD   dwTextFlags2,
  [in] LPCRECT pRect
);

パラメーター

[in] hTheme

種類: HTHEME

ウィンドウのテーマ データを処理します。 OpenThemeData を使用して HTHEME を作成します。

[in] hdc

種類: HDC

描画に使用する HDC。

[in] iPartId

型: int

目的のテキストの外観を備えたコントロールのパーツ。 「パーツと状態」を参照してください。 この値が 0 の場合、テキストは既定のフォント、またはデバイス コンテキストに選択されているフォントで描画されます。

[in] iStateId

型: int

目的のテキストの外観を備えたコントロールの状態。 「パーツと状態」を参照してください。

[in] pszText

種類: LPCWSTR

描画するテキストを含む文字列へのポインター。

[in] cchText

型: int

描画する文字数を含む int 型の値。 パラメーターが -1 に設定されている場合、文字列内のすべての文字が描画されます。

[in] dwTextFlags

種類: DWORD

文字列の書式設定を指定する 1 つ以上の値を含む DWORD。 使用可能なパラメーター値については、「 値の書式設定 」を参照してください。

メモ DrawThemeText では、DT_CALCRECTはサポートされていません。 ただし、 DrawThemeTextEx はDT_CALCRECTをサポートしています。
 

[in] dwTextFlags2

種類: DWORD

使用されていません。 0 に設定します。

[in] pRect

種類: LPCRECT

テキストを描画する四角形を論理座標で含む RECT 構造体へのポインター。 GetThemeTextExtent から pExtentRect を使用して正しい座標を取得することをお勧めします。

戻り値

種類: HRESULT

この関数が成功すると、 S_OKが返されます。 そうでない場合は、HRESULT エラー コードを返します。

注釈

関数では、指定した部分と状態にテーマ付きフォントが常に使用されます (定義されている場合)。 それ以外の場合は、デバイス コンテキストで現在選択されているフォントが使用されます。 テーマ付きフォントが定義されているかどうかを確認するには、 GetThemeFont または GetThemePropertyOrigin を呼び出し、プロパティ識別子としてTMT_FONTを指定します。

DrawThemeText は Win32 DrawText 関数と同様のパラメーターを使用しますが、いくつかの違いがあります。 最も注目すべき点の 1 つは、ワイド文字列のサポートです。 したがって、次の例のように、ワイドでない文字列をワイド文字列に変換する必要があります。

セキュリティの警告: MultiByteToWideChar を誤って使用すると、アプリケーションのセキュリティが損なわれる可能性があります。 ワイド文字バッファーを作成するときに、文字列のサイズをバイト単位ではなくワイド文字で格納するのに十分な大きさであることを確認します。

INT cchText = GetWindowTextLength(_hwnd);
if (cchText > 0)
{
    TCHAR *pszText = new TCHAR[cchText+1];
    if (pszText)
    {
        if (GetWindowText(_hwnd, pszText, cchText+1))
        {
            int widelen = MultiByteToWideChar(CP_ACP, 0, reinterpret_cast<LPCSTR>(pszText), 
                    cchText+1, NULL, 0);
            WCHAR *pszWideText = new WCHAR[widelen+1];
            MultiByteToWideChar(CP_ACP, 0, reinterpret_cast<LPCSTR>(pszText), cchText, 
                    pszWideText, widelen);

            SetBkMode(hdcPaint, TRANSPARENT);
            DrawThemeText(_hTheme,
                    hdcPaint,
                    BP_PUSHBUTTON,
                    _iStateId,
                    pszWideText,
                    cchText,
                    DT_CENTER | DT_VCENTER | DT_SINGLELINE,
                    NULL,
                    &rcContent);

            delete [] pszWideText;
        }

        delete [] pszText;
    }
}

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー uxtheme.h
Library UxTheme.lib
[DLL] UxTheme.dll

こちらもご覧ください

プロパティ識別子