问题2:具有LVS_EX_GRIDLINES时,怎样改变边框条条的颜色我只要这两个小的功能,其它的排序..编辑..的都不要,所以最好是给我重绘下的代码,不要给我www

解决方案 »

  1.   

    void CSkinListCtrl::OnCustomDrawList ( NMHDR* pNMHDR, LRESULT* pResult )
    {
    NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
    static bool bHighlighted = false;

        *pResult = CDRF_DODEFAULT;    if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage )
    {
            *pResult = CDRF_NOTIFYITEMDRAW;
    }
        else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage )
    {
            int iRow = (int)pLVCD->nmcd.dwItemSpec;

    bHighlighted = IsRowHighlighted(m_hWnd, iRow);
    if (bHighlighted)
    {
    pLVCD->clrText   = g_MyClrFgHi; // Use my foreground hilite color
    pLVCD->clrTextBk = g_MyClrBgHi; // Use my background hilite color

    EnableHighlighting(m_hWnd, iRow, false);
    }
    else if(iRow == Row)
    {
    pLVCD->clrText = g_MyClrItem;
    }

    *pResult = CDRF_DODEFAULT | CDRF_NOTIFYPOSTPAINT;

    }
    else if(CDDS_ITEMPOSTPAINT == pLVCD->nmcd.dwDrawStage)
    {
    if (bHighlighted)
          {
            int  iRow = (int)pLVCD->nmcd.dwItemSpec;        EnableHighlighting(m_hWnd, iRow, true);
          }      *pResult = CDRF_DODEFAULT; }
    }
      

  2.   

    问题就是我已经用pLVCD在OnCustomDraw下做过重绘了,所以再在pLVCD....的时候,新的重绘就会打以前的重绘搞出错,
    我想问下有没"巧妙"的方法,随便什么了,不一定要是重绘,可以达到目的,比如说我现在用的方法时,当选中某条记录的时候,在该位置Create出个小窗口,然后再取得item.sub的文本,再在dc下显示文本,图片,动画也都还可以,就是我觉得太垃圾,不想用这个