유돌이

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

2008. 12. 30. 23:16 C/C++/MFC

디바이스 컨텍스트(Device Context)

우리가 화면에 무언가를 출력하기 위해서는 반드시 윈도우즈 os로 부터 화면을 사용할수 있는 권한(디바이스 컨텍스트)를 얻어야함.(문자하나를 화면에 표시하려고 해도 얻어야만 화면출력이 가능)

디바이스 컨텍스트는 화면이나 프린터,플로터등 출력장치에 문자나 그림을 표시하기 위한 정보를 지닌 구조체이다. 윈도우즈에서 프로그램의 모든 출력요구는 디바이스 컨텍스트(DC)를 통해 이뤄진다.

 

GDI(Graphics Device Interface)

윈도우즈가 제공하는 GDI는 서로 다른 구조를 지닌 출력 장치에 대한 정보를 스스로 판단하고 분석하여 실제로 사용해야 할 드라이버를 로드한다. 응용프로그램과 여러 출력 장치간에 의사소통이 원활히 이루어지도록 통역관 역할을 하기때문에 출력장치마다 프로그램을 달리해야하는 프로그래머의 번거로운 작업을 대신해준다.

 

EX) 도화지 : DC   , 그림그리는 도구 : GDI

 

MFC의 디바이스 컨텍스트 관련 클래스

*DC는 무한정제공되는 것이 아니기 때문에 사용후에는 윈도우즈 os에 반납해야함

  DC클래스를 사용하면 DC를 사용후 윈도우즈에 반환해야하는 번거로운 절차가 없다.

 

1.CDC클래스

디바이스 컨텍스트에 대한 기초 클래스로 화면이나 프린터 출력에 관계된 대부분의 멤버함수를  포함한다.

2.CWindowDC

캡션바,메뉴바, 상태바 등 넌클라이언트 영역을 포함한 전체 윈도우를 표시하는 DC를 관리

3.CClientDC

캡션바,메뉴바,상태바 등을 제외한 클라이언트 영역만을 표시하는 DC를 관리

CClientDC의 생성자는 내부적으로 GetDC()함수를 호출하고 소멸자로 ReleaseDC()함수를 호출한다.

4.CPaintDC

WM_PAINT메시지가 발생했을 때 다시 그려져야 할 영역에 대한 DC를 관리하며 WM_PAINT의 메시지 핸들러인 OnPaint()함수에서 사용한다. 윈도우즈에서의 화면복원 기능을 수행하는

부분

내부적으로 BeginPaint()함수를 호출하고 소멸자는 EndPaint()함수를 호출한다.

5.CMetaFileDC

윈도우즈 메타파일(.WMF나 .EMF)에 대한 DC를 관리

메타파일:그래픽 이미지를 생성해낼수 있는 GDI명령들로 구성된 파일 ex)클립아트


'C/C++/MFC' 카테고리의 다른 글

[API]버튼만들기  (0) 2009.01.02
Invalidate() , OnDraw(CDC* pDC)  (0) 2009.01.02
윈도우즈와 메시지  (0) 2008.12.30
API 기초??  (0) 2008.12.30
const 사용법  (0) 2008.12.30
posted by 유돌이