2014-05-24 5 views
0

두 개의 열이있는 Windows ListView가 있다고 가정하면 LVM_GETITEMRECT가있는 행의 Rec를 가져올 수 있지만 Rec는 열로 덮여 있지 않은 ListView 영역을 포함하지 않습니다. 어떻게 결정합니까? 직사각형 영역에서 그릴 수 있습니까? 내가 원하는 지역에 더 열이없는 오른쪽에있는 파란색 강조되는 그림에서 ListView 행이 아닌 열 사각형

enter image description here

이 단지의 전체 행처럼 보이는 전체 행 선택을하기 위해 기본적으로.

답변

1

행의 RECT을 얻은 후에는 right 필드를 ListView의 클라이언트 영역 너비와 동일한 값으로 변경하면됩니다.

RECT rectRow; 
ListView_GetItemRect(hListView, iRow, &rectRow, LVIR_BOUNDS); 

RECT rectCli; 
GetClientRect(hListView, &rectCli); 

rectRow.right = (rectCli.right - rectCli.left); 
+0

감사합니다, 당신이 내가 원하는 정확히 수행 알고 있지만 비 행 영역을 다시 그릴 내 코드는 LVN_ITEMCHANGED 이벤트에 있기 때문에 소유자 데이터의 캔트 사용 LVN_ITEMCHANGING이며, 그이 지연 행의 조금의 원인 강조 표시가 해제 된 다음 새로 선택된 행이 강조 표시되고 강조 표시되지 않은 비 행 영역이 강조 표시되면 비 행 영역을 그리는 올바른 이벤트를 알 수 없습니까? –

+0

'LVN_ITEMCHANG (ING/ED)'는 이벤트를 그리지 않습니다. 'NM_CUSTOMDRAW' 이벤트에서만 모든 것을 그려야합니다. 무언가가 바뀌었을 때 다시 그리기를해야한다면,'LVM_REDRAWITEMS'를 사용하십시오. –