共用方式為


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

包含指定字串格式設定之一或多個值的 DWORD。 如需可能的參數值 ,請參閱格式 值。

注意 DrawThemeText 不支援DT_CALCRECT。 不過, DrawThemeTextEx 支援DT_CALCRECT。
 

[in] dwTextFlags2

類型: DWORD

未使用。 設定為零。

[in] pRect

類型: LPCRECT

RECT 結構的指標,其中包含要繪製文字的邏輯座標矩形。 建議您從 GetThemeTextExtent 使用 pExtentRect 來擷取正確的座標。

傳回值

類型: HRESULT

如果此函式成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。

備註

如果已定義主題字型,函式一律會針對指定的部分和狀態使用主題字型。 否則,它會使用目前在裝置內容中選取的字型。 若要瞭解是否已定義主題字型,您可以呼叫 GetThemeFontGetThemePropertyOrigin ,並將 TMT_FONT 作為屬性識別符。

範例

DrawThemeText 使用與 Win32 DrawText 函式類似的參數,但有一些差異。 其中一個最值得注意的是寬字元字串的支援。 因此,非寬字串必須轉換成寬字串,如下列範例所示。

安全性警告: 不正確地使用 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
程式庫 UxTheme.lib
Dll UxTheme.dll

另請參閱

屬性識別項