http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=52&MAEULNO=20&no=48030&page=6
HANDLE 은 원형이 void* 입니다. 보통 핸들이라고 읽고, 자동차 핸들처럼 먼가를 할 때
그것을 가지고 원하는 형태로 방향을 조절할 수 있어서 핸들이라고 이름 붙힌거겠죠.
그냥 포인터일 뿐, 그 이상도 그 이하도 아무것도 없습니다.
포인터라는 광범위한 개념에서 전부 void* 로 써놓으면 볼품 없으니까 이뿌라고 써놓은 것이죠.
일관성도 유지할 수 있고...
핸들 테이블이나, 파일 디스크립터 테이블이니 이런건 구지 알필요도 이해할 필요도 없습니다.
먼가를 만들면 나중에 해제해 주어야 한다는것.. 이것만 기억하시면 되고요..
(먼가를 만드는걸 제공해준 놈들은 저런걸 기억하고 있어야 하니 내부적인 테이블을 만들어 보관하는 거겠죠.)
그냥 이름을 아무렇게나 지으면 그렇게 되는겁니다.
누군가 HANDLE 이 모에요? 이렇게 물으면 쉽게 대답하기는 힘들겠지만..
C나 C++ 프로그램을 배우는 사람이 물어본다면, 포인터를 rename 해서 보기좋게 명명한 것이다..
정도로 대답해 줄 수 는 있을거 같습니다. (원형: typedef PVOID HANDLE; )
HWND또한 마찬가지 입니다. (원형: typedef HANDLE HWND;)
HANDLE 을 다시 타입 디파인해서 HWDN 라고 이름 지어놓은거구요..
여러가지 다양한 포인터 중에서 윈도우를 가르키는 포인터를 그냥 구분하기 좋게 HWND 라고 써놓은겁니다.
몽땅다 void*, 혹은 HANDLE 라고 써놓으면 구분하기 애매하니까..
(HWND: Handle to a WiNdoW 의 약자일 뿐입니다.)
그 외에 많은 형태의 다양한 이름을 가진 핸들(포인터)이 있는 데 모두 저 범주를 벗어나지 않습니다.
그냥 포인터 일뿐 ^^;;;
'차근차근 > C' 카테고리의 다른 글
비주얼 스튜디오에서의 dirent.h 의 사용 (0) | 2014.10.23 |
---|---|
리눅스(유닉스) 파일목록(하위디렉토리포함)구하기 (0) | 2014.10.22 |
WIN32_FIND_DATA 구조체 (0) | 2014.10.22 |
파일 속성을 검색 및 변경 (0) | 2014.10.22 |
지정한 경로에 존재하는 폴더와 파일목록을 얻는 방법 (0) | 2014.10.22 |