Compartilhar via


Função DrawThemeText (uxtheme.h)

Desenha texto usando a cor e a fonte definidas pelo estilo visual.

Sintaxe

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

Parâmetros

[in] hTheme

Tipo: HTHEME

Manipule para os dados de tema de uma janela. Use OpenThemeData para criar um HTHEME.

[in] hdc

Tipo: HDC

HDC a ser usado para desenho.

[in] iPartId

Tipo: int

A parte de controle que tem a aparência de texto desejada. Consulte Partes e Estados. Se esse valor for 0, o texto será desenhado na fonte padrão, ou uma fonte selecionada no contexto do dispositivo.

[in] iStateId

Tipo: int

O estado de controle que tem a aparência de texto desejada. Consulte Partes e Estados.

[in] pszText

Tipo: LPCWSTR

Ponteiro para uma cadeia de caracteres que contém o texto a ser desenhado.

[in] cchText

Tipo: int

Valor do tipo int que contém o número de caracteres a serem desenhados. Se o parâmetro for definido como -1, todos os caracteres na cadeia de caracteres serão desenhados.

[in] dwTextFlags

Tipo: DWORD

DWORD que contém um ou mais valores que especificam a formatação da cadeia de caracteres. Consulte Formatar valores para obter valores de parâmetro possíveis.

Nota DrawThemeText não dá suporte a DT_CALCRECT. No entanto, DrawThemeTextEx dá suporte a DT_CALCRECT.
 

[in] dwTextFlags2

Tipo: DWORD

Não usado. Defina como zero.

[in] pRect

Tipo: LPCRECT

Ponteiro para uma estrutura RECT que contém o retângulo, em coordenadas lógicas, em que o texto deve ser desenhado. É recomendável usar pExtentRect de GetThemeTextExtent para recuperar as coordenadas corretas.

Retornar valor

Tipo: HRESULT

Se essa função for bem-sucedida, ela retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT.

Comentários

A função sempre usa a fonte com tema para a parte e o estado especificados se um for definido. Caso contrário, ele usará a fonte atualmente selecionada no contexto do dispositivo. Para descobrir se uma fonte temática está definida, você pode chamar GetThemeFont ou GetThemePropertyOrigin com TMT_FONT como o identificador de propriedade.

Exemplos

DrawThemeText usa parâmetros semelhantes à função DrawText do Win32, mas com algumas diferenças. Um dos mais notáveis é o suporte para cadeias de caracteres largos. Portanto, cadeias de caracteres não largas devem ser convertidas em cadeias de caracteres largas, como no exemplo a seguir.

Aviso de segurança: Usar MultiByteToWideChar incorretamente pode comprometer a segurança do aplicativo. Verifique se, ao criar buffers de caracteres largos, eles são grandes o suficiente para acomodar o tamanho da cadeia de caracteres em caracteres largos, não em bytes.

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

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho uxtheme.h
Biblioteca UxTheme.lib
DLL UxTheme.dll

Confira também

Identificadores de propriedade