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。 使用可能なパラメーター値については、「 値の書式設定 」を参照してください。
[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 |