2008-10-24 3 views
1

알고있는 한 ON_WM_MEASUREITEM은 사용자 지정 그리기 목록 컨트롤에서 호출되지 않습니다. 컨트롤이 Owner Drawn 인 경우에만 사용됩니다.사용자 지정 Drown CListCtrl에서 항목 크기와 틈새를 변경하는 방법

나는 그것을하는 방법을 발견했다. 그러나 그것은 다소 해킹이다. 그리고 나는 어떻게 든 자동적으로 셋업되는 항목들 사이의 간격을 통제 할 수 없다.

당신이 필요로하는 크기의 이미지로 CImageList을 만들 수 있고, 이미지 목록을 목록 컨트롤에 할당하면 항목 크기가 이미지 크기에 가까운 크기로 조정됩니다. 그런 다음 사용자 정의 그리기를 사용하여 확대 된 항목 내부의 모든 것을 칠할 수 있습니다.

CImageList m_imageList1; 
m_imageList1.Create(176, 144, ILC_COLOR32 | ILC_MASK, 5, 1); 
GetListCtrl().SetImageList(&m_imageList1, LVSIL_NORMAL); 

그래서 사용자 정의 익사 제어에서 항목 크기와 간격을 어떻게 변경합니까?

LVS_OWNERDRAWFIXED으로 소유자 제어를 완전히 제어 할 수 있습니까?

+0

이미지의 전체 점이 항목의 크기와 비슷합니까? 그게 해킹이야? 그냥 질문에 대한 핸들을 얻으려고 ... – Aardvark

+0

내가 사용하지 않을 이미지 목록을 만들고 지정합니다. 나는 컨트롤을 속여서 이미지를 표시해야한다고 생각하게하므로 모든 항목에 더 큰 공간을 할당해야합니다. – Ma99uS

+0

그래서 시스템을 트릭하여 원하는 방식대로 직접 수행해야한다면 내 책에서 해킹으로 간주됩니다. :-) – Ma99uS

답변

1

업데이트.
VS2008에서 동일한 사용자 지정 그려진 목록 컨트롤을 컴파일했습니다. 그리고 모양이 달랐습니다. 항목 크기가 완벽했고 항목 사이에 간격이 없습니다. 나는 내가 VS2003 용 MFC에서만 가지고 있던 사이징 문제가 처음에는 사용하고 있었다고 생각합니다.
남자, MFC는 상수입니다 .-)

질문이 닫혀 있습니다.
고맙습니다 (저).

관련 문제