Ескерім
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Рисует текст с помощью цвета и шрифта, определенного стилем визуального элемента.
Синтаксис
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 |