『Lena's by ☆볶기!!』: Restart !!

Rorolena
[API] 기초적 출력
이번 포스팅은 API의 기초적 출력에 관하여 포스팅 해보겠습니다.

주의)_
다시는 주의 캡션이 안붙겠지만
앞서 말씀 드린 바와 같이 API 포스팅
여러분들이 C/C++의 기본지식이 있다는 전제
그리고 잡다한 설명은 적지않고 주로
사용방법 위주로 작성한다고 미리
말씀드렸으니 이점 널리 양해 부탁 드립니다.

이번 포스팅에서 할것은
기초적 출력으로 크게
3가지를 출력할 것입니다.

1. 텍스트
2. 도형
3. 메세지박스

기본적인 사용방법은 간단합니다.

텍스트)_
먼저 텍스트를 2가지 방법으로 출력할것입니다.
[첫번째 DrawText를 이용한 방법]
필요한것은 3가지 정도로 출력할 공간
작성된 문장과 띄울 수단인 DrawText 입니다.

RECT rt={50,30,300,100};
TCHAR *str=TEXT("TEXT 띄우기! 얼마든지 길게든 띄울수 있습니다."
"쌍따옴표를 쓰면 얼마든지 라인도 내릴수 있죠");

DrawText(hdc, str, -1, &rt, DT_CENTER | DT_WORDBREAK);

DrawText의 인자를 보시면 3번째 인가 -1이신걸 보실수 있습니다.
이 인자는 문자의 길이로 -1로 선언해주시면 NULL 문자가 있는
지점까지 알아서 출력을 해줍니다.

그외 5번째 인자는 정렬 방식으로써 정류가 다양한대요
정렬를 원하지 않을경우 NULL 처리를 하시면 됩니다.
참고방법은 맨하단 인자 정의참고를 확인하여 주시기 바랍니다.

[두번째 TextOut을 이용한 방법]
필요한것은 1~2가지 정도로 문자를 정렬할
SetTextAlignTextOut 이 되겠습니다.

SetTextAlign(hdc, TA_CENTER);
TextOut(hdc,400,30,TEXT("Beautiful Korea"),15);

※ 참고 사항1 입니다.
DrawText를 작성 하신대로 출력하시려면
문자 집합 옵션을 유니코드에서 멀티바이트로 변경해주셔야합니다.
변경 방법은 맨하단 문자 집합 바꾸기를 확인 하여 주시기 바랍니다.

※ 참고 사항2 입니다.
윈도우의 좌표 입력은 대부분 x, y 좌표 순으로 입력하게 되어있습니다.
RECT 같은경우 처음 x,y 목표 x, y 정도로 입력하게되죠

도형)_
도형 파트에선 4가지 도형 점, 선, 동그라미, 사각형
등을 출력 할것 입니다.
[점 출력]
필요한것은 SetPixel 입니다.

SetPixel(hdc,10,110,RGB(255,0,0));

2번째 3번째 인자는 x, y 좌표입니다.
4번째 인자는 글씨의 색으로 NULL
처리를 하시면 검정색으로 출력됩니다.

[선 출력]
필요한것은 2가지
MoveToExLineTo 입니다.

MoveToEx(hdc,50,100,NULL);
LineTo(hdc,300,140);

여기서 MoveToEx는 선의 시작점
LineTo는 선의 끝지점으로 생각하시면 간단합니다.

[동그라미 출력]
필요한것은 Ellipse 입니다.

Ellipse(hdc,20,70,100,150);

사각형을 만든다라는 느낌으로
시작 x,y와 목표 x,y를 지정해주시면
그 범위만큼의 동그라미가 자동으로 생성됩니다.

[사각 형 출력]
필요한것은 Rectangle 입니다.

Rectangle(hdc,50,150,200,230);

이건 위의 동그라미와 마찬가지로
사각형을 만든다라는 느낌으로 지정해주시면
자동으로 사각형이 생성됩니다.

메세지박스)_
여기선 메세지박스라는 녀석을 출력 해보도록 하겠습니다.
[메세지 박스 출력]
필요한것은 MessageBox 입니다.

MessageBox(hWnd, TEXT("메세지 박스 입니다."), TEXT("알림"),  MB_OK);

주로 윈도우에서 알림같은 것을
띄우기위해 자주 사용되는 녀석인대요

인자 설명을 하자면
첫번째가 핸들
두번째가 띄울 메세지 내용
세번째가 캡션(알림 재목)
네번째가 출력할 버튼 입니다.

※ 참고 사항1 입니다.
아래 본소스를 열어보시면
MessageBoxWM_LBUTTONUP: 에
작성된걸 보실수 있을 것입니다.
여기서 WM_LBUTTONUP
L 왼쪽의 BUTTON 마우스 버튼을
UP 클릭에서 때었다 정도로 읽을수 있는대요
요는 왼쪽 마우스 클릭후라는 윈도우 메세지입니다.

※ 참고 사항2 입니다.
API에서 인자로 주는 핸들은(HWND)
주로 출력 대상이 되는 윈도우의
(해당 소스가 작성되어있는 윈도우)
핸들을 주로 인자로 줍니다.

만약 이런 핸들의 관계 없이 MessageBox를
출력하시고자 할때는 hWnd을 NULL로 처리하시면
윈도우에 상관없이 해당 MessageBox에 진입하면
알아서 메세지 박스를 출력하게 됩니다.

최소한의 필요한 설명은
이쯤에서 간력히 마치고

위의 소스들을 전부 출력하면
이런 형태가 됩니다.


인자 정의 참고)_
인자 정의 참고 방법입니다.
아래 그림과같이 해당 인자옵션에
마우스를 올려두시고 오른 클릭을 합니다.


그럼 위와 같은 메뉴가 나오는대요
여기서 정의로 이동
혹은 선언으로 이동을 눌러주시면

이 스샷과같이 해당 정의된 문서의
정의된 위치로 화면을 띠워 줍니다.
그럼 거기서 적절한것을 찾고, 검색하셔서
알맞은것을 사용하시면 되겠습니다.

문자 집합 바꾸기)_
문자 집합을 바꾸는 방법입니다.
단축키로는 Alt + F7 입니다.



해당 프로젝트에서 오른클릭 후 속성
혹은 메뉴중 프로젝트에서 Window 속성에 들어가시면

요론놈이 하나 뜨는대요
여기서 초기 설청은 대부분
유니코드 문자 집합 사용으로 되어있습니다.

이걸 멀티 바이트 혹은 필요하신거로
적절히 바꾸어주신다음 적용해주시면
문자가 아주 잘적용 될것입니다.

'보관소 ▦ ━━ > 작업 기록' 카테고리의 다른 글

[C/C++] 5. 상수와 기본 자료형  (0) 2012.01.12
[API] 기초적 입력  (0) 2012.01.12
[API] 윈도우 만들기  (4) 2012.01.06
2012/01/06 API 포스팅 스타트  (0) 2012.01.06