2011-01-05 4 views
2

カスタム描画リストビューコントロールサブアイテムにNM_CUSTOMDRAWメッセージハンドラを作成しました。それはほぼOKです。しかし、選択されたアイテムをカスタム描画することはできません。私のカスタム設定は常に無視され、青色のbkColor上のデフォルトの白いテキストが描画されます。Windowsリストビューコントロールで選択したアイテム行をカスタム描画する方法

選択したアイテムをカスタム描画する機会はありますか?

答えて

1

私は正常にカスタムOnCustomDraw()ハンドラの舞台を描き、そして選択した項目が描かれた後CDRF_SKIPDEFAULTを返すCDDS_ITEMPREPAINTで選択した項目を描画するコードを書かれている:

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); 
} 

このコードは、これまでのところ良い作品。どんな改善提案も大歓迎です。

関連する問題