Функция 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 , содержащую прямоугольник в логических координатах, в которых должен быть нарисован текст. Для получения правильных координат рекомендуется использовать pExtentRect из GetThemeTextExtent .

Возвращаемое значение

Тип: HRESULT

Если эта функция завершается успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Комментарии

Функция всегда использует тематический шрифт для указанной части и состояния, если он определен. В противном случае используется шрифт, выбранный в настоящее время в контексте устройства. Чтобы узнать, определен ли тематический шрифт, можно вызвать Метод GetThemeFont или GetThemePropertyOrigin с 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
Header uxtheme.h
Библиотека UxTheme.lib
DLL UxTheme.dll

См. также раздел

Идентификаторы свойств