2. DC(Device Context)와 CDC

2024. 4. 17. 14:28[C++]/MFC 프로그래밍 기초

DC와 CDC의 정의

 

🍃  Windows는 세 가지 동적 연결 라이브러리로 구성된다.

  • 메모리와 프로그램을 관리하는 Kernel 영역
  • User Interface와 Window를 관리하는 User 영역
  • 화면 처리와 그래픽을 담당하는 GDI - (DC와 CDC 부분)

 

🍃 DC(Device Context)는?

  • GDI는 Windows 운영 체제에서 화면에 접근하는 것을 담당하는데, 래픽 출력을 관리하기 위한 추상적인 개념이 DC이다.
  • DC에 저장되어 있는 객체들을 사용해 형식에 맞는 선언을 해줘야 한다. (화면, 프린터, 메모리 등의 출력 장치에 대한 정보를 가지고 있다.
  • DC는 그래픽 요소를 생성하고 제어하는 데 사용된다. 예를 들어, 선을 그리거나 사각형을 채우는 등의 그래픽 작업을 수행할 수 있다.

 

🍃  CDC란?

  • Windows의 DC를 MFC에서 추상화한 클래스
  • CDC는 MFC(Microsoft Foundation Class) 프레임워크에서 사용되는 클래스로, Windows의 DC를 쉽게 다룰 수 있도록 클래스화한 것이다.
  • CDC는 Windows의 DC와 상호작용하여 그래픽 작업을 수행하는 클래스이다.
  • CDC 클래스는 DC를 캡슐화하여 그래픽 출력을 보다 쉽게 처리할 수 있도록 도와준다.
  • CDC 객체를 사용하여 그래픽 작업을 수행하고, 펜, 브러시, 글꼴 등의 속성을 설정할 수 있다.

 

  1.  
요약
DC는 Windows에서 그래픽 출력을 관리하는 개념이고, CDC는 MFC에서 DC를 쉽게 다룰 수 있도록 만들어진 클래스이다.

DC에 대한 클래스 및 파생 클래스

🍃 CDC Class

  • DC 에 대한 기초 클래스로 화면이나 프린터 출력에 관계된 대부분의 멤버 함수를 포함한다.
  • CDC 클래스를 직접 사용하여 화면, 메모리, 프린터 등의 다양한 DC를 다룰 수 있다.
  • 출력할 수 있는 영역에 따라 파생클래스가 있다.

 

🍃  CWindowDC

  • 윈도우 전체 영역에 그래픽을 출력하기 위한 DC를 다루는 클래스
  • 윈도우의 클라이언트 영역과 프레임을 포함한 전체 영역에 그래픽을 출력할 때 사용된다.
  • 캡션바, 메뉴바, 상태바 등 Non Client영역을 포함한 전체 윈도우를 표시하는 DC를 관리한다.

 

🍃 CClientDC

  • 윈도우의 클라이언트 영역에 그래픽을 출력하기 위한 DC를 다루는 클래스
  • 주로 윈도우의 클라이언트 영역에 그래픽을 그릴 때 사용된다.
  • Window영역의 캡션바 메뉴바 상태바 등을 제외한 클라이언트 영역만을 관리하는 DC를 뜻한다.

 

🍃 CPaintDC

  • 윈도우의 클라이언트 영역을 그리기 위해 윈도우 프로시저에서 BeginPaint와 EndPaint 함수 사이에서 사용되는 DC를 다루는 클래스
  • 주로 WM_PAINT 메시지가 발생했을때 다시 그려져야 할 영역에 대한 DC를 관리한다. 

 

🍃 CMemoryDC:

  • 메모리에 그래픽을 그리기 위한 DC를 다루는 클래스.
  • 화면이나 프린터에 직접 그리지 않고, 메모리에 임시로 그래픽을 그릴 때 사용된다.

 

🍃 CPrinterDC:

  • 프린터에 그래픽을 출력하기 위한 DC를 다루는 클래스
  • 프린터로 출력할 때 사용된다.
반응형