Функция 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 , содержащий одно или несколько значений, определяющих форматирование строки. Возможные значения параметров см. в разделе Значения форматирования .
[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 |