2016. 8. 30. 14:50

* 리스트 컨트롤의 스타일과 구성

- 리스트 박스와 달리 아이콘과 문자열로 항목이 구성

- 스타일에 따라 여러 문자열

- 컬럼 헤더를 버튼처럼 활용하여 항목을 정렬

- 항목의 아이콘은 스타일에 따라 다른 크기의 이미지를 가짐

- 여러 이미지 목록을 설정해서 사용

- 내부적으로 에디트 컨트롤과 헤더 컨트롤 내장


* 리스트 컨트롤의 생성과 활용


- InsertItem() 메서드는 네 가지로 다중 정의되며 가장 간단한 타입은 다음과 같다


m_List.InsertItem(0, "1th item");


- 첫 번째 인자는 추가할 항목의 인덱스이고, 두 번째 인자는 추가할 항목의 문자열

- 리스트 박스와 달리 문자열이 한 행을 차지하는 것이 아니라 정해진 범위에 표시'



* 스타일의 변경

- 리스트 컨트롤은 크게 세가지 (큰 아이콘, 작은 아이콘, 리포트) 스타일을 가질 수 있음

- 리스트 컨트롤의 스타일은 속성창에서 변경하는 방법과 윈도우 탐색기처럼 동적으로 변경하는 방법



* 리포트 스타일

- InsertColumn() 메서드는 리스트 컨트롤이 리포트 스타일일 때 각 컬럼의 제목이 되는 헤더 컨트롤을 추가하는 함수

- 첫 번째는 추가할 컬럼의 인덱스, 두 번째 인자는 컬럼의 문자열

- 세번째 인자는 컬럼 헤더의 문자열을 어떻게 맞출지 명시하는 것

- LVCFMT_LEFT는 왼쪽으로 맞추도록 함

- 네 번째 인자는 컬럼 헤더의 폭(픽셀 단위)


* ModifyStyle() 

-  컨트롤 윈도우의 기본 스타일을 변경하는 함수

- 이 함수의 첫 번째 인자는 기존 스타일

- 두 번째 인자는 새로 적용할 스타일

- 윈도우 탐색기처럼 스타일을 동적으로 바꾸려면 이 함수를 호출하는 코드를 작성


* SetItemText()

- 리스트 컨트롤에 등록된 항목의 문자열을 변경

- 첫 번째 인자는 변경할 항목의 인덱스

- 두 번째 인자는 첫 번째 인자에 해당하는 항목의 하위 항목의 인덱스

- 세 번째 인자는 변경할 새 문자열이 저장된 버퍼의 주소



* 항목 문자열의 동적 변경

- 윈도우 탐색기에서 기존 선택된 파일이나 폴더 항목을 누르면 에디트 컨트롤이 출력되어 사용자가 문자열을 변경할 수 있도록 함

- 리스트 컨트롤이 내장 에디트 컨트롤을 갖고 있기 때문

- 리스트 컨트롤의 Edit Labels 속성을 True로 변경

- 그리고 에디트 컨트롤의 편집이 끝나면 리스트 컨트롤의 LVN_ENDLABELEDIT 통지 메시지 발생