IT하는 참새

Win32 api - DC 본문

프로그래밍/Win32 API

Win32 api - DC

pshot 2018. 7. 15. 02:01

윈도우즈는 세 가지 동적 라이브러리로 구성된다


kernel.dll : 메모리관리와 프로그램 실행함

user.dll : UI와 윈도우관리함

gdi.dll : 화면출력에 관한 모든것들을 관리함


그럼 화면에 글씨를쓰든, 선을긋든 등등 화면에 보여지는 모든작업은 gdi.dll을 활용해야하는가?


YES!!

YES!!

YES!!


이어서 DC라는 개념이 있음


DC(Device Context): gdi.dll 모듈의 데이터 구조체이다 (실제 구조체명은 HDC)


프로그래밍을 할때에는 DC를 활용하면 되는것!



단순한 DC의 활용법 (글자를 나타내기)


이 코드는 좌클릭시 프로그램에 Hello World글자가 나온다






1. HDC 변수 선언

2. GetDC함수로 DC얻어옴

3. TextOut(화면에 텍스트출력)함수에 DC를 비롯한 인수를 주어 실행

4. 더이상 출력할 일 없으면 ReleaseDC함수로 DC해제


이렇게 출력하는 것의 문제점


- 화면이 다른윈도우에 가려지거나 잠깐 창 내렸다가 올리면 글자가 사라짐


그렇다면? 


=> PAINT라는 개념이 존재함


윈도우 프로그램은 자신이 지워진 부분을 뚝-딱 혼자 복구하는 기능은 없다

하지만 이 부분이 지워졌다면 빠르게 다시 복구해줘!! 라고 명령은 내릴 수 있다


이것이 PAINT의 개념


사용법

- 윈도우 메시지로 처리한다 (WM_PAINT)




1. HDC 변수 선언

2. PAINTSTRUCT 변수 선언

3. BeginPaint함수로 DC를 얻어옴

4. TextOut(화면에 텍스트출력)함수에 DC를 비롯한 인수를 주어 실행

5. 더이상 출력할 일 없으면 EndPaint함수로 DC해제



윈도우 프로그램은 자신이 지워진 부분을 스스로 복구하는 능력이 없다

그러므로 복구희망하는 코드라면 이렇게 PAINT를 이용하는 것이 맞다





'프로그래밍 > Win32 API' 카테고리의 다른 글

Win32 api - MessageBox  (0) 2018.07.15
Win32 api - Process  (0) 2018.07.15
Win32 API - Template  (0) 2017.12.03