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.

Catatan DrawThemeText tidak mendukung DT_CALCRECT. Namun, DrawThemeTextEx mendukung DT_CALCRECT.
 

[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

Lihat juga

Pengidentifikasi Properti