2011-01-05 4 views
2

사용자 지정 그리기 목록보기 컨트롤 하위 항목에 NM_CUSTOMDRAW 메시지 처리기를 만들었습니다. 거의 괜찮습니다. 그러나, 내가 선택한 사용자 지정 항목을 그릴 수 없습니다. 내 사용자 정의 설정은 항상 무시되고 파란색 이상의 기본 흰색 텍스트 bkColor가 그려집니다.Windows 목록보기 컨트롤에서 선택한 항목 행을 사용자 지정하는 방법

선택한 항목을 사용자 정의 할 수 있습니까? 선택한 항목을 그린 후 나는 성공적으로 사용자 정의 OnCustomDraw의 단계() 핸들러를 그릴 CDDS_ITEMPREPAINT에서 선택한 항목을 그리고 CDRF_SKIPDEFAULT를 반환하는 코드를 작성했습니다

답변

1

는 :

int subitemCount = GetHeaderCtrl().GetItemCount(); 
CRect itemRect; 
for (int i = 0; i < subitemCount; i++) // Draw individual subitem 
{ 
    if (i == 0) 
    { 
     // My own function 
     // calculate correct rect for first(index=0) subitem 
     CalculateItemRect(nIndex, itemRect); 
    } 
    else if (!GetSubItemRect(nIndex, i, LVIR_BOUNDS, itemRect)) 
    { 
     return; 
    } 

    // Adjust text rect to avoid overlapping with vertical grid line 
    itemRect.left += 6; 
    dc.DrawText(GetItemText(nIndex, i), itemRect, DT_LEFT | DT_NOCLIP | DT_VCENTER | DT_SINGLELINE | DT_END_ELLIPSIS); 
} 

이 코드는 지금까지 그렇게 잘 작동합니다. 어떤 개선 제안도 환영합니다.

관련 문제