다음을 통해 공유


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

사용되지 않습니다. 0으로 설정됩니다.

[in] pRect

형식: LPCRECT

텍스트를 그릴 논리 좌표의 사각형을 포함하는 RECT 구조체에 대한 포인터입니다. GetThemeTextExtent에서 pExtentRect를 사용하여 올바른 좌표를 검색하는 것이 좋습니다.

반환 값

형식: HRESULT

이 함수가 성공하면 S_OK 반환합니다. 그러지 않으면 HRESULT 오류 코드를 반환합니다.

설명

함수는 지정된 부분에 대해 테마 글꼴을 항상 사용하고, 정의된 경우 상태를 사용합니다. 그렇지 않으면 디바이스 컨텍스트에 현재 선택된 글꼴을 사용합니다. 테마 글꼴이 정의되어 있는지 확인하려면 속성 식별자로 TMT_FONT 사용하여 GetThemeFont 또는 GetThemePropertyOrigin 을 호출할 수 있습니다.

예제

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
헤더 uxtheme.h
라이브러리 UxTheme.lib
DLL UxTheme.dll

추가 정보

속성 식별자