안녕하세요. 천리안 프로그래머 포럼 C++Builder 담당 임펠리테리입니다.
간단히 말하자면, 방법은 없습니다. 리스트뷰 자체는 Win32 컨트롤로서, 컬러를
지정하는 메시지로 LVM_SETTEXTCOLOR(x텍스트의 컬러 지정), LVM_SETTEXTBKCOLOR
(텍스트의 백그라운드 컬러 지정), LVM_SETBKCOLOR(윈도우 자체의 백그라운드 컬러)
등의 메시지를 가지고 있지만, 그것을 컬럼별로 지정할 수는 없습니다.
하지만.. 절대로! 꼭! 이것을 구현하지 못하면 안된다는.. 그런 상황이라면,
아주 방법이 없는 것은 아닙니다. 방금 한가지 트릭이 생각났는데요. ^^;;;
리스트뷰도 윈도우 컨트롤이므로, 배경이 지워지고 새로 그려질때마다
WM_ERASEBACKGROUND 메시지가 발생합니다. 여기서 리스트뷰의 dc를 가진 캔바스를
생성해서 무언가 끄적거려주면 그대로 배경에 그려지죠. (관련 팁이 빌더라운지에
올려져 있습니다. 물론 소스포함.) 그러면... 리스트뷰의 Column 프로퍼티에서
각 컬럼의 Width를 알아내고, 그만큼을 직접 그려줄 수 있겠죠.
코딩은, 팁을 참고하셔서 직접 해보시기 바랍니다. 그리 어렵지는 않을겁니다.
그럼 참고하시길...
임펠리테리 박지훈이었습니다.
(cbuilder, cbuilder@thrunet.com)
|