MFC 中 CListCtrl 的问题

Keep___Going 2014-12-09 04:41:55
自绘了一个ListCtrl,基类是CListCtrl,正常情况下是这样的

行使价=1000是第一行
然后不知道怎么就出现了下面这种问题,第一行只能漏出一点点,但是滚动条已经到最顶上了,不能再往上滚动了



要用鼠标在那漏出的一点点上单击一下,第一行才能刷新出来


第一行刷新出来之后,表头与表格之间就出来一条缝隙,好大一条缝隙啊




然后将滚动条往下滚动,再滚到最顶时,第一行又只能漏一点点了


这是咋回事??????大神带我飞啊

发送重绘消息的函数

LRESULT ClistctrlOptions::OnMyRedrawItem( WPARAM item, LPARAM subitem ) //根据情况 发出重绘item 信号
{
if( item == 0xFFFFFFFE) // if item = -2, redraw whole list control 重绘整个list control
{
Invalidate(FALSE);
}
if( item==0xffffffff ) // item<0, mean redraw items[0,subitem] 重绘items[0,subitem]
{
RedrawItems( 0, subitem );
}
else
if( subitem==0xffffffff ) // subItem<0, mean Update item's all subitem. 重绘items[subitem,subitem]
{
RedrawItems( item, item );
}
else
{
if( subitem>=0 && subitem<MACRO_MaxSubItems )
{
int refrectsubitem = subitem ;
if( refrectsubitem>=0 )
{
CRect rect ;
if( GetSubItemRect( item, refrectsubitem, LVIR_LABEL, rect )==TRUE )
{
rect.left++ ;
rect.right-- ;
rect.top++ ;
rect.bottom-- ;
InvalidateRect( rect, FALSE ); // only update subitem, no need clear bgn.
}
}

}

}
return 0;
}



重绘函数(代码已简化,将那些设置颜色啥的代码都去掉了)

void ClistctrlOptions::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) //重绘函数
{

LPDRAWITEMSTRUCT lpDIS = lpDrawItemStruct;
int nItem=lpDIS->itemID; //将要重绘的行值
if(nItem == -1)
return ;
CRect rcCol = lpDIS->rcItem; //这行的位置

CString sText;
CDC* pDC=CDC::FromHandle(lpDIS->hDC);
int nOldDCMode=pDC->SaveDC();

LVITEM item;
item.iItem = nItem;
item.iSubItem = 0;
item.mask = LVIF_IMAGE|LVIF_STATE;
item.stateMask = 0XFFFF;
GetItem(&item);



ListView_SetExtendedListViewStyle(this->m_hWnd, this->GetStyle() & ~LVS_EX_GRIDLINES);//不显示网格线


LV_COLUMN lvc;
lvc.mask=LVCF_FMT|LVCF_WIDTH;


rcCol.right = rcCol.left;
for(int nCol=0; GetColumn(nCol,&lvc); nCol++)
{
rcCol.left = rcCol.right;
rcCol.right = rcCol.left + GetColumnWidth(nCol);


::Rectangle(lpDIS->hDC, rcCol.left-1, rcCol.top-1 , rcCol.right , rcCol.bottom );


pDC->DrawText(sText, -1, CRect::CRect(rcCol.left+3,rcCol.top,rcCol.right,rcCol.bottom-2), DT_RIGHT);
}
pDC->RestoreDC(nOldDCMode);

}
...全文
203 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Keep___Going 2014-12-22
  • 打赏
  • 举报
回复
问题解决了,详情请看 http://bbs.csdn.net/topics/390950583?page=1#post-398660539
Keep___Going 2014-12-10
  • 打赏
  • 举报
回复
哎,两边的帖子都掉了
FightForProgrammer 2014-12-09
  • 打赏
  • 举报
回复
这个版块貌似是c/c++。还有个版块叫VC/MFC 是不是你多弄了一行啊
赵4老师 2014-12-09
  • 打赏
  • 举报
回复
请楼下VC/MFC论坛的大神来解决。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧