윈도우에서는 텍스트를 출력하는 방법이 2가지로 나뉜다.


 한 줄을 출력하는 TextOut()을 이용한다.


 TextOut(HDC hdc, // DC의 핸들.

int nXStart, // 문자열의 x축 시작점.

int nYStart, // 문자열의 y축 시작점.

LPCTSTR lpString, // 출력할 문자열.

int cbString); // 문자열 길이.



 전에 사용한 WM_LBUTTONDWN: 라는 이벤트에서 문자열을 출력하기 위해서 사용한 것이다.


 HDC는 GDI을 컨트롤 하기 위해서 사용하는 핸들 정보이고, XStart와 YStart는 윈도우스에 출력되는 위치 정보를 지정한다.


 출력할 문자열 lpString은 문자열(문자 배열)을 받아 들여서 윈도우상에 출력하는 것이고, cbString은 출력하고자하는 문자열의 길이를 받아 들인다.


 그래서 주로 char arr[]="Test"; strlen(arr); 이런식의 정보를 넣는게 많을 것이다.


 사각 영역에 문자열을 출력하는 경우도 있다.

 메모장의 자동 줄 바꿈 형태라고 이해하면, 빠를 것 같다.


 사각 영역을 설정하기 위해서 우리는 사각형 영역을 정하는 구조체를 봐야한다.


 전에 윈도우 출력하는 부분에서 평면에 2가지 방식이 있다. 라고 했다.


 1. 좌상단과 우하단의 점 위치 정보를 가지고 있어야 되는 것.

 2. 좌상단의 점 위치를 알고, 넓이와 높이를 알고 있어야 되는 것.


 여기서 윈도우 생성하는 CreateWindow의 함수에는 2번째를 사용한다. 라고 했다.


 RECT의 정보는 그와는 다르게 1의 방식을 사용한다.


 RECT 구조체 정의


 struct _RECT{

LONG left; // 왼쪽 좌표.

LONG top; // 상단 좌표.

LONG right; // 오른쪽 좌표.

LONG bottom; // 하단 좌표.

 };

 _RECT라는 구조체는 사각형을 받는 구조체이다. POINT 구조체를 이용하는 것은 복잡한 구조가 되기 때문에, 변수 4개가 되어 있다.


 사각형 영역에 문자열을 출력하는 함수

 DrawText는 다음과 같은 원형을 갖는다.


 int DrawText(

HDC hdc, // DC의 핸들

LPCTSTR lpString, // 출력할 문자열

int nCount, // 문자열 길이

LPRECT lpRect, // 문자열의 출력될 사각 영역의 구조체 포인터

UINT uFormat); // 문자열을 어떤 형태로 출력할 지 설정하는 옵션.


 uFormat은 문자열의 형태(워드에서 좌측 정렬 우측 정렬 같은 형태를 뜻한다.)를 뜻한다.

 이것도 BitData로 저장시키는 것이기 떄문에 OR 연산이 가능하다.(속성을 중복 처리가 가능하다. 라는 뜻이다.)


 예제


 (소스)


 다음과 같은 형태로 윈도우의 값이 나오게 된다.

Posted by JunkMam
,