안녕하세요. 천리안 프로그래머포럼 C++Builder 담당자 임펠리테리입니다.
이미지리스트는 기본적으로 win32의 이미지리스트를 래핑한 것입니다.
당연히 win32 api에서 이미지리스트를 이용하는 곳에 동일하게 사용됩니다.
이 이미지리스트는, 가장 흔하게는 툴바에 연결될 경우를 들 수 있습니다.
툴바 컨트롤은 (api에서든 vcl에서든) 자체적으로 이미지를 가지지 않습니다.
단지 표시할 이미지를 읽을 이미지리스트의 포인터를 가지는 속성
(TImageList::Images)과, 각 버튼의 경우 앞에서 지정한 이미지리스트에서
몇번째 이미지를 표시할 것인가 하는 속성(TToolButton::ImageIndex)만을 가지죠.
이렇게, 툴바는 자체적으로 이미지를 가지지 않고 이미지리스트가 가지고 있는
이미지를 불러오게 됩니다.
비슷하다고 생각할 수 있는 모든 경우가 비슷합니다. (말이 꼬이네요.. ^^)
트리뷰나 리스트뷰의 경우에도 많은 양의 아이콘 이미지를 가지고 있어야 하는데,
이 경우도 별도의 이미지리스트와 연결해서 사용합니다. 그리고 각 아이템인
TListItem이나 TTreeNode 도 동일한 방법으로, ImageIndex를 가지고 몇번째 이미지를
표시할 것인가 하는 것을 결정하게 됩니다.
부연하자면... 앞에서도 말했듯이 이미지리스트는 win32의 이미지리스트를 래핑한
것이므로 이미지리스트의 핸들 속성은 win32의 HIMAGELIST입니다.
이 핸들을 이용하면 윈32 api에서 사용하는 모든 모든 이미지리스트 관련
함수들을 사용할 수 있는 것은 당연하겠죠?
그럼 참고하시길...
독립문에서 임펠리테리였습니다.
(cbuilder, cbuilder@thrunet.com)
|