ㅇ 윈도우즈 구성
- 윈도우즈는 세가지 동적 연결 라이브러리로 구성되어 있다.
- KERNEL : 메모리를 관리하고 프로그램을 실행
- USER : 유저 인터페이스와 윈도우를 관리하는 USER
- GDI : 화면처리와 그래픽 담당
ㅇ DC(Device ConText)
- 출력에 필요한 모든 정보를 가지는 데이터 구조체
- GDI에 의해 관리
- 어떤 폰트, 색상, 굵기, 출력방법 등이 모두 출력에 필요한 정보
ㅇ 사용예) LineTo
- LineTo(hDC,X,Y) : 선의 색상, 굵기, 모양 등의 정보를 모두 모아 DC에 넣고 DC의 핸들을 넘겨 받아 그린다.
- LineTo(hDC,100,100) : 화면에 여러개의 창이 있는 경우 내가 지정한 창을 찾아 LinTo 함수를 실행한다.
ㅇ 사용예) TextOut
case WM_LBUTTONDOWN:
hdc=GetDC(hWnd);
TextOut(hdc,100,100,"Beautiful Korea",15);
ReleaseDC(hWnd, hdc);
return 0;
- 문자열을 출력하기전에 GetDC 함수로 DC를 얻고 TextOut 함수로 문자열을 출력한 후 ReleaseDC 함수로 DC를 해체한다.
ㅇ DC를 얻는 방법
- 화면으로 출력 하기 위해서는 반드시 DC가 있어야 한다.
- 얻는 방법에는 2가지가 있다.
- 1) 첫번쨰 방법 : GetDC함수를 사용해서 DC를 얻고 ReleaseDC로 해제
HDC GetDC(HWND hWnd);
int ReleaseDC(HWND hWnd,HDC hDC);
- 2) 두번째 방법 : WM_PAINT 메시지 루틴에서만 사용가능, GetDC로 얻지 않고 BeginPaint 함수로 얻고 해체할때는 EndPaint 함수를 사용
HDC BeginPaint(HWND hwnd, LPPAINTSTRUCT lpPaint);
BOOL EndPaint(HWND hWnd,CONST PAINTSTRUCT *lpPaint);
- BeginPaint는 WM_PAINT 메시지내에서 그림 그리기 준비를 하는 좀 더 전문적인 함수이다.
- BeginPaint 함수는 윈도우 핸들 외에도 페인트 정보 구조체를 요구 하며 이 구조체는 그림 그리기에 필요한 정보를 담는다.
typedef struct tagPAINTSTRUCT
{
HDC hdc;
BOOL fErase;
RECT rcPaint;
BOOL fRestore;
BOOL fIncUpdate;
BYTE rgbReserved[16];
} PAINTSTRUCT;
- 앞의 세 멤버는 사용자가 사용하는 멤버, 나머지 세 멤버는 윈도우즈가 내부적으로 사용하는 것으로 건드려서는 안됨
- WndProc 선두에서 PAINTSTRUCT 형의 구조체를 지역 변수로 선언하고 Begint 함수로 호출한후 그 리턴값을 hdc라는 변수에 대입받아
GDI 함수에 사용하고 EndPaint로 그리기를 종료하면 된다.
ps : 자세한 내용은 www.WinAPI.co.kr 참고
'[ C/ C++ 프로그래밍 ] > [ WinAPI ]' 카테고리의 다른 글
파일 불러 올때 상대 경로를 설정 방법 (1) | 2010.06.30 |
---|---|
[Windows Api 정복 정리 ] 메시지 처리 함수 (WinProc) (1) | 2010.05.31 |
[Windows Api 정복 정리 ] 메시지 루프 (0) | 2010.05.31 |
[Windows Api 정복 정리 ] WinMain & 윈도우 클래스 (1) | 2010.05.31 |
[Windows Api 정복 정리 ] 기초 (0) | 2010.05.31 |