인스턴스(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