컴퓨터 공부/Win32 API 프로그래밍

[4월 28일 3교시] 출력(DC)

려리군 2009. 4. 28. 16:33

윈도우의 3가지 핵심 모듈

커널 : 메모리 관리, 프로그램 실행.

User : 사용자 인터페이스, 윈도우 관리

GDI : 화면처리 및 그래픽


DC

GDI 모듈(운영체제에서 화면 처리와 그래픽을 관리)에 의해 관리.

해당하는 윈도우의 표시영역, 그리기 위한 객체들 관리.

멀티tasking 환경에 의해 탄생.


DC를 얻는방법

HDC GetDC(HWND hWnd);

특정 윈도우의 클라이언트 영역에 대한 모니터 출력 DC를 가리키는 핸들을 얻는다.

int ReleaseDC(HWND hWnd, HDC hDC);

다른 응용 프로그램에 의해 사용할 수 있도록 DC를 해제한다.


WM_PAINT

지워졌던 영역(무효화 영역)을 다시 그려야 할 때 발생하는 메세지

HDC BeginPaint(HWND hwnd, LPPAINTSTRUCT lpPaint);

무효 영역에 관한 정보와 함께 PAINTSTRUCT 구조체를 채우고 그리기 위한 특정 윈도우를 준비한다.

BOOL EndPaint(HWND hwnd, CONST PAINTSTRUCT* lpPaint);

특정 윈도우의 그리기가 끝났음을 알린다. BeginPaint함수가 먼저 호출되어야 하고 그리기가 완료할 상황이어야 한다.


문자출력

BOOL TextOut(HDC hdc, int nXStart, int nYStart, LPCTSTR lpString, int cbString);

lpString문자열을 cbString바이트만큼 X,Y위치에 출력한다.

UINT SetTextAlign(HDC hdc, UINT fMode);

fMode 정렬값에 맞추어 문자열을 출력한다.

int DrawText(HDC hdc, LPCTSTR lpString, int nCount, LPRECT lpRECT, UINT uFormat);

lpRect영역 크기의 uFormat정렬 상태의 글상자를 생성한 후 nCount바이트만큼 lpString 문자열을 출력. 


도형출력

COLORREF SetPixel(hdc, nXPos, nYPos, clrref);

X,Y위치의 clrref색의 점을 출력한다. 리턴값은 실제 출력한 점의 색깔.

DWORD MoveToEx(hdc, x, y, lpPoint);

BOOL LineTo(hdc, xEnd, yEnd);

x,y부터 xEnd, yEnd까지 선을 그린다.

BOOL Rectangle(hdc, nLeftRect, nTopRect. nRightRecet, nBottomRect);

사각형을 그린다.

BOOL Ellipse(hdc, nLeftRect, nTopRect. nRightRecet, nBottomRect);

타원을 그린다.


메세지박스

int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);

오너윈도우 hWnd에 대해 lpCaption의 제목과 lpText의 내용으로 uType형태의 메세지 박스를 출력한다.

리턴값은 사용자가 선택(입력)한 값이다.


BOOL MessageBeep(UINT uType);

스피커를 통해 간단한 비프음을 낸다.