牵着老婆满街逛

严以律己,宽以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

关于CListCtrl::GetSubItemRect()的问题

今天扩展List控件,调用CListCtrl::GetSubItemRect()获取subItem==0项的rect时出了问题,我用TRACE打印数据发现left和right的数值是不正确的,似乎获取到的是整个list控件的大小,后来查了一下MSDN,里面写着:
iSubItem

The one-based index of the subitem.

无语死了。。。。。

重写CListCtrl::GetSubItemRect()算哒。。。。。

BOOL GetSubItemRect( int nItem, int nSubItem, int nArea, CRect& rect )
{
    ASSERT(nItem 
>= 0);
    ASSERT(nItem 
< GetItemCount());
    
if ((nItem < 0|| nItem >= GetItemCount())
        
return FALSE;
    ASSERT(nSubItem 
>= 0);
    ASSERT(nSubItem 
< GetHeaderCtrl()->GetItemCount());
    
if ((nSubItem < 0|| nSubItem >= GetHeaderCtrl()->GetItemCount())
        
return FALSE;

    BOOL bRC 
= CListCtrl::GetSubItemRect(nItem, nSubItem, nArea, rect);

    
if (nSubItem == 0)
    {
        
int offset = rect.left;

        CRect firstColumnRect;
        GetHeaderCtrl()
->GetItemRect(0&firstColumnRect);
        rect.left 
= firstColumnRect.left + offset;
        rect.right 
= firstColumnRect.right + offset;
    }

    
return bRC;
}


-_-这下好了。

posted on 2009-03-04 17:03 杨粼波 阅读(4660) 评论(3)  编辑 收藏 引用

评论

# re: 关于CListCtrl::GetSubItemRect()的问题 2011-08-13 21:51

很好很强大。。谢谢了、、、  回复  更多评论   

# re: 关于CListCtrl::GetSubItemRect()的问题 2011-09-13 16:07 Michael Yan

用到了,很完美,多谢~~~  回复  更多评论   

# re: 关于CListCtrl::GetSubItemRect()的问题 2012-12-27 17:34 china200_ok

Thanks  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理