Fungsi DrawThemeText (uxtheme.h)
Menggambar teks menggunakan warna dan font yang ditentukan oleh gaya visual.
Sintaks
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
);
Parameter
[in] hTheme
Jenis: HTHEME
Menangani data tema jendela. Gunakan OpenThemeData untuk membuat HTHEME.
[in] hdc
Jenis: HDC
HDC yang digunakan untuk menggambar.
[in] iPartId
Jenis: int
Bagian kontrol yang memiliki tampilan teks yang diinginkan. Lihat Bagian dan Negara Bagian. Jika nilai ini adalah 0, teks digambar dalam font default, atau font yang dipilih ke dalam konteks perangkat.
[in] iStateId
Jenis: int
Status kontrol yang memiliki tampilan teks yang diinginkan. Lihat Bagian dan Negara Bagian.
[in] pszText
Jenis: LPCWSTR
Penunjuk ke string yang berisi teks yang akan digambar.
[in] cchText
Jenis: int
Nilai tipe int yang berisi jumlah karakter yang akan digambar. Jika parameter diatur ke -1, semua karakter dalam string akan digambar.
[in] dwTextFlags
Jenis: DWORD
DWORD yang berisi satu atau beberapa nilai yang menentukan pemformatan string. Lihat Format Nilai untuk kemungkinan nilai parameter.
[in] dwTextFlags2
Jenis: DWORD
Tidak digunakan. Atur ke nol.
[in] pRect
Jenis: LPCRECT
Penunjuk ke struktur RECT yang berisi persegi panjang, dalam koordinat logis, di mana teks akan digambar. Disarankan untuk menggunakan pExtentRect dari GetThemeTextExtent untuk mengambil koordinat yang benar.
Nilai kembali
Jenis: HRESULT
Jika fungsi ini berhasil, fungsi akan mengembalikan S_OK. Jika tidak, kode kesalahan HRESULT akan dikembalikan.
Keterangan
Fungsi ini selalu menggunakan font bermasalah untuk bagian dan status yang ditentukan jika ditentukan. Jika tidak, ia menggunakan font yang saat ini dipilih ke dalam konteks perangkat. Untuk mengetahui apakah font bertema ditentukan, Anda dapat memanggil GetThemeFont atau GetThemePropertyOrigin dengan TMT_FONT sebagai pengidentifikasi properti.
Contoh
DrawThemeText menggunakan parameter yang mirip dengan fungsi DrawText Win32, tetapi dengan beberapa perbedaan. Salah satu yang paling mencolok adalah dukungan untuk string karakter lebar. Oleh karena itu, string non-lebar harus dikonversi ke string lebar, seperti dalam contoh berikut.
Peringatan Keamanan: Menggunakan MultiByteToWideChar salah dapat membahayakan keamanan aplikasi Anda. Pastikan bahwa saat membuat buffer karakter lebar, mereka cukup besar untuk mengakomodasi ukuran string dalam karakter lebar, bukan dalam byte.
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;
}
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows Vista [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2003 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | uxtheme.h |
Pustaka | UxTheme.lib |
DLL | UxTheme.dll |