Partager via


Fonction DrawThemeText (uxtheme.h)

Dessine du texte à l’aide de la couleur et de la police définies par le style visuel.

Syntaxe

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
);

Paramètres

[in] hTheme

Type : HTHEME

Gérez les données de thème d’une fenêtre. Utilisez OpenThemeData pour créer un HTHEME.

[in] hdc

Type : HDC

HDC à utiliser pour le dessin.

[in] iPartId

Type : int

Composant du contrôle ayant l’apparence de texte désirée. Consultez Parties et états. Si cette valeur est égale à 0, le texte est dessiné avec la police par défaut ou une police sélectionnée dans le contexte de l’appareil.

[in] iStateId

Type : int

État du contrôle ayant l’apparence de texte désirée. Consultez Parties et états.

[in] pszText

Type : LPCWSTR

Pointeur vers une chaîne qui contient le texte à dessiner.

[in] cchText

Type : int

Valeur de type int qui contient le nombre de caractères à dessiner. Si le paramètre a la valeur -1, tous les caractères de la chaîne sont dessinés.

[in] dwTextFlags

Type : DWORD

DWORD qui contient une ou plusieurs valeurs qui spécifient la mise en forme de la chaîne. Pour connaître les valeurs de paramètres possibles, consultez Format des valeurs .

Note DrawThemeText ne prend pas en charge DT_CALCRECT. Toutefois, DrawThemeTextEx prend en charge DT_CALCRECT.
 

[in] dwTextFlags2

Type : DWORD

Non utilisé. Définit la valeur zéro.

[in] pRect

Type : LPCRECT

Pointeur vers une structure RECT qui contient le rectangle, en coordonnées logiques, dans lequel le texte doit être dessiné. Il est recommandé d’utiliser pExtentRect à partir de GetThemeTextExtent pour récupérer les coordonnées correctes.

Valeur retournée

Type : HRESULT

Si cette fonction réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT.

Remarques

La fonction utilise toujours la police de thème pour la partie et l’état spécifiés, le cas échéant. Sinon, il utilise la police actuellement sélectionnée dans le contexte de l’appareil. Pour savoir si une police à thème est définie, vous pouvez appeler GetThemeFont ou GetThemePropertyOrigin avec TMT_FONT comme identificateur de propriété.

Exemples

DrawThemeText utilise des paramètres similaires à la fonction DrawText Win32, mais avec quelques différences. L’un des plus notables est la prise en charge des chaînes à caractères larges. Par conséquent, les chaînes non larges doivent être converties en chaînes larges, comme dans l’exemple suivant.

Avertissement de sécurité : L’utilisation incorrecte de MultiByteToWideChar peut compromettre la sécurité de votre application. Assurez-vous que lors de la création de mémoires tampons à caractères larges, elles sont suffisamment grandes pour prendre en charge la taille de la chaîne en caractères larges, et non en octets.

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;
    }
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête uxtheme.h
Bibliothèque UxTheme.lib
DLL UxTheme.dll

Voir aussi

Identificateurs de propriété