2016. 11. 17. 22:37

DC의 필요성

프로그래밍/MFC 2016. 11. 17. 22:37

* DC (Device Context)


- 출력에 필요한 모든 정보를 가지는 데이터 구조체



* DC를 얻는 방법


1. GetDC() 를 사용하여 DC를 얻고 사용 후 ReleaseDC() 로 해제


- DC는 주로 하나의 윈도우와 연관되는 출력 정보를 가진다

- 그래서 인수로 어떤 윈도우에 대한 DC가 필요한가를 알려주어야 함


- GetDC() 는 hWnd가 가리키는 윈도우에 적당한 DC를 만들어 그 핸들을 리턴

- DC도 메모리를 차지하므로 할당 후 해제 원칙이 반드시 준수


HDC hdc = GetDC(hWnd);

각종 출력

ReleaseDC(hWnd, hdc);



2. 두 번째 얻는 방법은 WM_PAINT 메시지 루틴에서만 사용 가능


- BeginPaint()로 얻으며 핸들을 해제할 때는 EndPaint() 함수 사용

- PAINTSTRUCT 형의 구조체를 지역 변수로 선언하고 다음과 같이 사용


PAINTSTRUCT paintStruct;

HDC hdc;


WM_PAINT:

    hdc = BeginPaint(hWnd, &ps);

    각종 출력

    EndPaint(hWnd, &ps);


- PAINTSTRUCT 에는 그리기 속도를 비약적으로 향상시킬 수 있는 정보들이 있음

- 이 정보를 활용하는 방법에 대해서는 다음에 자세하게 배울 것