DrawText 함수(winuser.h)

DrawText 함수는 지정된 사각형에 서식이 지정된 텍스트를 그립니다. 지정된 메서드(탭 확장, 문자 양쪽 맞춤, 줄 바꿈 등)에 따라 텍스트의 서식을 지정합니다.

추가 서식 옵션을 지정하려면 DrawTextEx 함수를 사용합니다.

구문

int DrawText(
  [in]      HDC     hdc,
  [in, out] LPCTSTR lpchText,
  [in]      int     cchText,
  [in, out] LPRECT  lprc,
  [in]      UINT    format
);

매개 변수

[in] hdc

디바이스 컨텍스트에 대한 핸들입니다.

[in, out] lpchText

그릴 텍스트를 지정하는 문자열에 대한 포인터입니다. nCount 매개 변수가 -1이면 문자열은 null로 끝나야 합니다.

uFormat에 DT_MODIFYSTRING 포함된 경우 함수는 이 문자열에 최대 4개의 추가 문자를 추가할 수 있습니다. 문자열을 포함하는 버퍼는 이러한 추가 문자를 수용할 수 있을 만큼 충분히 커야 합니다.

[in] cchText

문자열의 길이(문자)입니다. nCount가 -1이면 lpchText 매개 변수는 null로 끝나는 문자열에 대한 포인터로 간주되고 DrawText는 문자 수를 자동으로 계산합니다.

[in, out] lprc

텍스트의 서식을 지정할 사각형(논리적 좌표)이 포함된 RECT 구조체에 대한 포인터입니다.

[in] format

텍스트의 서식을 지정하는 메서드입니다. 이 매개 변수는 다음 값 중 하나 이상일 수 있습니다.

의미
DT_BOTTOM
텍스트를 사각형 아래쪽에 맞춥니다. 이 값은 DT_SINGLELINE 값에만 사용됩니다.
DT_CALCRECT
사각형의 너비와 높이를 결정합니다. 여러 줄의 텍스트가 있는 경우 DrawTextlpRect 매개 변수가 가리키는 사각형의 너비를 사용하고 사각형의 밑을 확장하여 텍스트의 마지막 줄을 바인딩합니다. 가장 큰 단어가 사각형보다 넓으면 너비가 확장됩니다. 텍스트가 사각형의 너비보다 작으면 너비가 줄어듭니다. 텍스트 줄이 하나만 있는 경우 DrawText 는 사각형의 오른쪽을 수정하여 줄의 마지막 문자를 경계로 합니다. 두 경우 모두 DrawText 는 서식이 지정된 텍스트의 높이를 반환하지만 텍스트를 그리지 않습니다.
DT_CENTER
직사각형에서 텍스트를 가로로 가운데에 맞춥다.
DT_EDITCONTROL
여러 줄 편집 컨트롤의 텍스트 표시 특성을 복제합니다. 특히, 평균 문자 너비는 편집 컨트롤과 동일한 방식으로 계산되며 함수는 부분적으로 보이는 마지막 줄을 표시하지 않습니다.
DT_END_ELLIPSIS
표시된 텍스트의 경우 문자열의 끝이 사각형에 맞지 않으면 잘리고 줄임표가 추가됩니다. 문자열의 끝에 있지 않은 단어가 사각형의 범위를 벗어나면 줄임표 없이 잘립니다.

DT_MODIFYSTRING 플래그를 지정하지 않으면 문자열이 수정되지 않습니다.

DT_PATH_ELLIPSIS 및 DT_WORD_ELLIPSIS 비교합니다.

DT_EXPANDTABS
탭 문자를 확장합니다. 탭당 기본 문자 수는 8개입니다. DT_WORD_ELLIPSIS, DT_PATH_ELLIPSIS 및 DT_END_ELLIPSIS 값은 DT_EXPANDTABS 값과 함께 사용할 수 없습니다.
DT_EXTERNALLEADING
줄 높이에 글꼴에 대한 추가 세로 공간을 포함시킵니다. 일반적으로 추가 세로 공간은 텍스트 줄의 높이에 포함되지 않습니다.
DT_HIDEPREFIX
텍스트에 앰퍼샌드 (&) 접두사 문자는 무시합니다. 뒤에 오는 문자에 밑줄이 그어지지 않습니다, 하지만 다른 니모닉 접두사 문자는 계속 처리 합니다.

예제:

입력 문자열: "&bc&&d"

normal: "abc&d"

DT_HIDEPREFIX: "Abc&d"

DT_NOPREFIX 및 DT_PREFIXONLY 비교합니다.

DT_INTERNAL
시스템 글꼴을 사용하여 텍스트 메트릭을 계산합니다.
DT_LEFT
텍스트를 왼쪽으로 정렬합니다.
DT_MODIFYSTRING
표시된 텍스트와 일치하도록 지정된 문자열을 수정합니다. 이 값은 DT_END_ELLIPSIS 또는 DT_PATH_ELLIPSIS를 지정하지 않으면 적용되지 않습니다.
DT_NOCLIP
클리핑하지 않고 그립니다. DrawText 는 DT_NOCLIP 사용할 때 다소 빠릅니다.
DT_NOFULLWIDTHCHARBREAK
줄 바꿈 규칙이 SBCS 문자열과 동일하도록 DBCS(이중 너비 문자열)에서 줄 바꿈을 방지합니다. 예를 들어 아이콘 레이블의 가독성을 높이기 위해 한국어 창에서 사용할 수 있습니다. 이 값은 DT_WORDBREAK를 지정하지 않으면 적용되지 않습니다.
DT_NOPREFIX
접두사 처리를 해제합니다. 일반적으로 DrawText 는 & 니모닉 접두사 문자를 지시문으로 해석하여 다음 문자를 밑줄로 표시하고, 니모닉 접두사 문자는 단일 & 인쇄하는 지시문으로 && . DT_NOPREFIX를 지정하면 이 처리가 비활성화됩니다. 예를 들면 다음과 같습니다.

예제:

입력 문자열: "&bc&&d"

normal: "abc&d"

DT_NOPREFIX: "&bc&&d"

DT_HIDEPREFIX 및 DT_PREFIXONLY 비교합니다.

DT_PATH_ELLIPSIS
표시된 텍스트의 경우 문자열 중간에 있는 문자를 줄임표로 바꿔 결과가 지정된 사각형에 맞도록 합니다. 문자열에 백슬래시(\\) 문자가 포함된 경우 DT_PATH_ELLIPSIS 마지막 백슬래시 다음에 가능한 한 많은 텍스트를 유지합니다.

DT_MODIFYSTRING 플래그를 지정하지 않으면 문자열이 수정되지 않습니다.

DT_END_ELLIPSIS 및 DT_WORD_ELLIPSIS 비교합니다.

DT_PREFIXONLY
앰퍼샌드 (&) 접두사 문자 다음의 위치에만 밑줄을 그립니다. 문자열에 다른 문자를 그리지 않습니다. 예를 들면 다음과 같습니다.

예제:

입력 문자열: "&bc&&d"n

normal: "abc&d"

DT_PREFIXONLY: " _ "

DT_HIDEPREFIX 및 DT_NOPREFIX 비교합니다.

DT_RIGHT
텍스트를 오른쪽으로 정렬합니다.
DT_RTLREADING
hdc로 선택한 글꼴이 히브리어 또는 아랍어 글꼴인 경우 양방향 텍스트의 오른쪽에서 왼쪽 읽기 순서로 레이아웃 모든 텍스트의 기본 읽기 순서는 왼쪽에서 오른쪽입니다.
DT_SINGLELINE
한 줄에만 텍스트를 표시합니다. 캐리지 리턴 및 줄 바꿈은 줄을 끊지 않습니다.
DT_TABSTOP
탭 정지를 설정합니다. uFormat 매개 변수의 비트 15-8(하위 단어의 상위 바이트)은 각 탭의 문자 수를 지정합니다. 탭당 기본 문자 수는 8자입니다. DT_CALCRECT, DT_EXTERNALLEADING, DT_INTERNAL, DT_NOCLIP 및 DT_NOPREFIX 값은 DT_TABSTOP 값과 함께 사용할 수 없습니다.
DT_TOP
텍스트를 사각형의 위쪽으로 맞춥니다.
DT_VCENTER
텍스트를 세로로 가운데에 맞춥니다. 이 값은 DT_SINGLELINE 값에만 사용됩니다.
DT_WORDBREAK
단어를 중단합니다. 단어가 lpRect 매개 변수로 지정된 사각형의 가장자리를 지나 확장하면 단어 사이에 줄이 자동으로 끊어집니다. 캐리지 리턴 라인 피드 시퀀스도 선을 끊습니다.

지정하지 않으면 출력이 한 줄에 있습니다.

DT_WORD_ELLIPSIS
사각형에 맞지 않는 단어를 자르고 줄임표를 추가합니다.

DT_END_ELLIPSIS 및 DT_PATH_ELLIPSIS 비교합니다.

반환 값

함수가 성공하면 반환 값은 논리 단위의 텍스트 높이입니다. DT_VCENTER 또는 DT_BOTTOM 지정한 경우 반환 값은 그리기 텍스트의 아래쪽에서 lpRect->top 오프셋입니다.

함수가 실패하면 반환 값은 0입니다.

설명

DrawText 함수는 디바이스 컨텍스트의 선택한 글꼴, 텍스트 색 및 배경색을 사용하여 텍스트를 그립니다. DT_NOCLIP 형식을 사용하지 않는 한 DrawText 는 텍스트를 잘라내어 지정된 사각형 외부에 나타나지 않도록 합니다. 큰 오버행이 있는 텍스트(예: 텍스트 문자열의 초기 "W") 또는 기울임꼴에 있는 텍스트와 같이 잘립니다. DT_SINGLELINE 형식을 지정하지 않으면 모든 서식에 여러 줄이 있는 것으로 간주됩니다.

선택한 글꼴이 지정된 사각형에 비해 너무 큰 경우 DrawText 함수는 더 작은 글꼴을 대체하려고 시도하지 않습니다.

디바이스 컨텍스트의 텍스트 맞춤 모드에는 TA_LEFT, TA_TOP 및 TA_NOUPDATECP 플래그가 포함되어야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 winuser.h(Windows.h 포함)
라이브러리 User32.lib
DLL User32.dll
API 세트 ext-ms-win-ntuser-misc-l1-1-0(Windows 8 도입)

추가 정보

DrawTextEx

글꼴 및 텍스트 함수

글꼴 및 텍스트 개요

GrayString

Rect

TabbedTextOut

TextOut