Win32 API

INSTANCE와 HANDLE의 차이점

FreeChild 2010. 4. 3. 04:23

인스턴스(INSTANCE)라는 개념은 어떤 대상이나 단위의 구체적인 그 실체를 의미합니다. 특정한

어떤 대상에만 국한되는 개념이 아니라, 범용적인
개념으로 통용됩니다. 간단하게 예를 들어.. int a;와
 
같은 선언이  있다면, a는 int형의 인스턴스라고 할 수 있습니다.
int는 단순히 그 자료형의 길이를 표현

할 뿐, 그 자체로는 아무것도 나타낼
수 없죠. int a;라고해야 비로소 그 int형의 실체인 a가 생성되는 것

처럼 말입니다.
쉽게 이야기하면 int 자체는 하나의 틀입니다. 붕어빵 틀을 생각해 봅시다. 그 틀로 여러

개의 붕어빵을 만들 수가 있지요?
int a, b, c;처럼 말입니다. 틀은 하나뿐이지만, 그 틀로 만들 수 있는

실체는 복수입니다. a나 b, c 모두 int의 인스턴스지만 서로 구분되지 않습니까.
같은 틀을 사용했지만

그 실체는 구분하기 위한 개념이라고 할 수 있습니다.
Win32 API에서 통상적으로 불리는 인스턴스는 프

로세스(실행중인 프로그램)을
구분하기 위한 개념이 되지요. 하드디스크에 깔려있는 프로그램은 하나뿐

이지만,
그 프로그램의 실체 프로세스는 여러개가 될 수 있지요. 위에서 말한 것처럼 그 프로그램의 실체

를 구분해주기 위한 단위입니다.

핸들(HANDLE)운영체제에 의해 생성된 리소스나 오브젝트를 제어하기 위한 32bit의 정수값입니다.

자동차의 핸들을 생각해 봅시다. 우리는 자동차의 방향을 움직이기 위해서 복잡한 구조를 알아야 하거나 다

룰 필요가 없죠. 단지 핸들만 있으면 방향을 제어할 수 있는 것처럼 말입니다.
HINSTANCE hInstance는

그 프로세스(실행중인 프로그램)의 핸들값입니다.
프로세스 하나는 여러개의 윈도우를 가질 수 있죠.

그 윈도우들을 구분하고 제어하기 위한 값이 핸들(HWND hWnd)입니다.

Written By Sim-Hyeon, Choe