Notice
Recent Posts
관리 메뉴

Hacking Arts

문자열 / 점 / 선 / 사각형 / 원 / 다각형 / 메시지 박스 본문

Programing/API Programing

문자열 / 점 / 선 / 사각형 / 원 / 다각형 / 메시지 박스

Rakehell 2014. 10. 10. 21:02


<문자열 출력 : TextOut>

TextOut함수는 기본적이고 많이 사용되는 함수다.

[ 그림 1 TextOut 함수 사용]

[ 그림 2 TextOut 함수 정의]

- 첫번째 인자는 DC의 핸들, 두번째와 세번째는 출력될 시작 좌표,네번째는 출력할 문자열을 담고 있는 문자열 포인터, 마지막 인수는 문자열의 길이를 나타낸다.


[ 그림 3 DrawText 사용 ]

[ 그림 4 DrawText 함수 정의 ]

[ 그림 5 Rect 구조체 ]

- 첫번째 인자는 DC핸들, 두번째는 출력할 문자열 포인터, 그리고 글자수, rect구조체인데 위와 같이 좌표를 가지고 있는다.그다음 마지막 uFormat인데 사각형의 옵션을 정해주는 것이다. 종류는 MSDN에 나온다.


<점>


[ 그림 6 SetPiexel 사용]

- 위 그림에 저거 이 물질 아닙니다. 점이 찍힌 겁니다.. 워낙 작아 잘 안보이는데 저런식으로 찍힙니다. RGB는 Red Green Blue 순의 색이구요. 빛은 색이 섞일수록 흰색과 가까워지는 미술시간에 배운개념을 생각하시면 됩니다. SetPixel 인자는 DC핸들,좌표,색깔 이면 되구요 GetPixel도 있습니다. 다른 점은 색을 넣지 낳고 그냥 DC핸들, 좌표만 들어갑니다.


- 선 

[ 그림 7 선 출력]

- MoveToEx 함수는 처음에 시작하는 지점을 나타내고 LineTo 함수는 끝지점을 가리킨다. 둘이 하나가 되어 선을 완성한다.


<사각형>

[ 그림 8 RoundRect 함수 설명 ]


[ 그림 9 사각형 출력 ]

- 위 그림 8 처럼 RoundRect를 사용하고 Rectangle은 아래 그림 9 처럼 좌표를 넣어주게 되면 사각형을 그려주게 된다.


<원>

[ 그림 10 원 출력 ]

- 왼쪽 위부터 Ellipse 오른쪽 위 Arc 왼쪽 아래 Chord 오른쪽 아래 Pie 함수 이다. 저런식으로 출력하게 된다.


<다각형>

[ 그림 11 다각형 출력 ]

[ 그림 12 POINT 구조체 ]

- 다각형 출력은 Polyline함수와 Polygon에 되는데 선과 다각형이다. 저런식으로 Point를 선언하게되는데 x,y의 좌표들이다. 그림 12와 같은 구조의 포인터 구조체를 이용하여 선언하면 된다.


<메시지 박스>


[ 그림 13 메시지 박스 출력 ]

- 메시지 박스는 굉장히 자주 사용되므로 기억하도록 하자 저런식으로 첫번째 인자에 윈도우 핸들 값, 그리고 출력 문자열, 그 다음 제목, 형태인데 형태의 경우 MSDN에 검색하면 나온다. 이런식으로 구성되서 실행된다.


<메시지 비프> 

[ 그림 14 MessageBeep ]

- 메시지 비프안에 들어가는 값은 여러 가지인데 이것도 MSDN을 참고하고 소리를 내게 할 수 있다.


-아래 소스 코드는 위에 예제들 소스 코드이다. 윈 프로시져에서 사용하면 된다.

	//TextOut을 이용한 문자열 출력
	/*case WM_PAINT:
		hdc = BeginPaint(hWnd, &ps);
		TextOut(hdc, 100, 50, L"TextOut", 7);
		EndPaint(hWnd, &ps);
		return 0;*/
	//DrawText를 이용한 출력
	/*case WM_PAINT:
		hdc = BeginPaint(hWnd, &ps);
		DrawText(hdc, strTemp, wcslen(strTemp), &rect, DT_WORDBREAK | DT_LEFT);
		EndPaint(hWnd, &ps);
		return 0;*/
	/*case WM_PAINT:
		hdc = BeginPaint(hWnd, &ps);
		SetPixel(hdc, 100, 100, RGB(255, 0, 0));
		EndPaint(hWnd, &ps);
		return 0;*/
	/*case WM_PAINT:
		hdc = BeginPaint(hWnd, &ps);
		MoveToEx(hdc, 20, 20, NULL);
		LineTo(hdc, 200, 100);
		EndPaint(hWnd, &ps);
		return 0;*/
	/*case WM_PAINT:
		hdc = BeginPaint(hWnd, &ps);
		Rectangle(hdc, 100, 100, 200, 300);
		RoundRect(hdc, 400, 100, 600, 300, 20, 20);
		EndPaint(hWnd, &ps);
		return 0;*/
	/*case WM_PAINT:
		hdc = BeginPaint(hWnd, &ps);
		Ellipse(hdc, 100, 100, 200, 200);
		Arc(hdc, 300, 100, 400, 200, 350, 100, 400, 150);
		Chord(hdc, 100, 300, 200, 400, 150, 300, 100, 350);
		Pie(hdc, 300, 300, 400, 400, 350, 300, 300, 350);
		EndPaint(hWnd, &ps);
		return 0;*/
	/*case WM_PAINT:
		hdc = BeginPaint(hWnd, &ps);
		Polyline(hdc, polyline, 5);
		Polygon(hdc, polygon, 5);
		EndPaint(hWnd, &ps);
		return 0;*/
	/*case WM_LBUTTONDOWN:
		hdc = GetDC(hWnd);
		if (MessageBox(hWnd, L"시스템을 종료?", L"exit", MB_YESNO) == IDYES)
		{
			MessageBox(hWnd, L"시스템 종료!", L"레알 종료", MB_OK);
		}
		else
		{
			MessageBox(hWnd, L"종료 취소", L"노 종료", MB_OK);
		}
		ReleaseDC(hWnd, hdc);
		return 0;*/
	case WM_LBUTTONDOWN:
		hdc = GetDC(hWnd);
		MessageBeep(MB_ICONASTERISK);
		ReleaseDC(hWnd, hdc);
		return 0;


'Programing > API Programing' 카테고리의 다른 글

키보드 입력  (0) 2014.10.10
마우스 입력  (0) 2014.10.10
출력 / GDI / DC  (0) 2014.10.10
APIENTRY와 CALLBACK, WndProc  (0) 2014.09.28
LoadLibrary() 와 GetProcAddress()  (1) 2014.09.26