Win32_API - HINSTANCE / HWND / HDC

컴퓨터/Win32-API

728x90
반응형

서론

Win32 API를 배우면 가장 처음 보는 자료형들 중 하나이며 가장 중요한 녀석들입니다.

본문에서는 이 용어들을 조금 더 자세히 알아보도록 합시다.

 

우선 Handle을 알아야 한다.

Win32 API를 통해 응용 프로그래밍을 한다는 것은 운영체제의 제어권 아래에서 구동되는 프로그램을 만든다는 것입니다.

운영체제 또한 프로그램이기 때문에 당연하게도 많은 자원이 메모리상에서 관리되고 있습니다.

만약 운영체제에서 사용하는 메모리에 특정 응용프로그램이 접근하여 손쉽게 사용 및 수정이 가능하면 어떻게 될까요?

이런 상황은 매우 위험한 결과를 초래할 수 있습니다. 메인 운영체제의 동작에 문제가 생길 수도 있고 다른 응용프로그램에까지 영향을 줄 수 있기 때문입니다.

하지만 운영체제가 운영하는 자원을 응용프로그램에게 전달은 해주어야 됩니다.

이렇게 안전하게 전달해 주기 위한 방법으로 Handle이라는 개념을 사용합니다.

간단하게 설명하면 Handle은 운영체제가 응용프로그램에 자원을 줄 때 암호화를 해서 주는 방법입니다.

 

HINSTANCE(Handle + Instance) 

앞선 글들에서 HINSTANCE는 프로그램 고유의 값을 의미하는 녀석이라고 했습니다. 

다시 한번 핸들의 개념과 합치면 고유의 아이디 값의 메모리 주소를 핸들의 형태(암호화된)로 받는 변수입니다.

당연히 프로그램당 하나의 HINSTANCE가 존재하게 됩니다.

 

HWIND(Handle + Window)

하나의 응용프로그램에는 여러 개의 윈도우가 존재할 수 있습니다. 이런 여러개의 윈도의 식별 값 또한 당연히 필요하겠죠 그래야만 접근하고 관리할 수 있기 때문입니다.

이 HWIND는 각각의 윈도를 식별할 수 있는 핸들 값입니다.

 

HDC(Handle + Device Context)

DC라는 개념은 간단하게 말해서 '출력을 담당하는 도구'입니다. 그리기 도구라고 생각하시면 이해가 쉬울 것입니다. 

Windows 응용 프로그래밍에서는 DC의 개념을 통해 윈도 창에 '그리기'를 할 수 있습니다. 모니터의 시각적인 효과를 낼 수 있다는 말이죠.

다시 정리하자면, HDC 또한 어떠한 윈도우 창에 DC의 핸들 값을 의미합니다. 

 

Win32를 배우다 보면 많은 자료형들이 H로 시작하는 것을 많이 볼 수 있습니다. 이 자료형들은 대부분 핸들 값을 의미하여 운영체제에서 자원을 넘겨줄 때 사용된다고 생각하시면 됩니다.

728x90
반응형

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :