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 .
[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 |