15.VC(ui)-listctrl绘制(解决水平滚动文字重影bug)
来源:互联网 发布:migration数据库 编辑:程序博客网 时间:2024/06/10 10:31
犯了一个小错,水平滚动时出现文字重影,所以改了下:
错误在于,在遍历列时,我用
CRect rcColumn;GetHeaderCtrl()->GetItemRect(i, &rcColumn);
这是错误的,因为一旦水平滚动时,这样得到的rcColumn就会不确定,因为rcColumn是得到绘制区域left,right,这两个值不停变化,从而产生文字的重影
所以改了下,改用GetColumn,因为它得到的是width,在水平滚动时,width是不会变化的。
代码如下:
CDC dc;CRect rc;dc.Attach(lpDIS->hDC);rc = lpDIS->rcItem;CRect rcItem(rc);//--draw bkgrand -------------------------------if (lpDIS->itemState & ODS_SELECTED){ dc.FillSolidRect(&rcItem,RGB(235, 235, 235));}else{dc.FillSolidRect(&rcItem,RGB(255, 255, 255));}TCHAR szBuf[1024];LVITEM lvi;lvi.iItem =lpDIS->itemID;lvi.iSubItem = 0;lvi.mask = LVIF_TEXT | LVIF_IMAGE;lvi.pszText = szBuf;lvi.cchTextMax = 1024;GetItem(&lvi);CRect rcIcon;rcIcon.SetRectEmpty();//-----draw image --------------------------------CImageList* pImgList = GetImageList(LVSIL_NORMAL);if(!pImgList)pImgList = GetImageList(LVSIL_SMALL);if(!pImgList)pImgList = GetImageList(LVSIL_STATE);if (pImgList&&lvi.iImage >=0){IMAGEINFO ii = {0};pImgList->GetImageInfo(lvi.iImage, &ii);rcIcon = ii.rcImage ;rcIcon.OffsetRect(rcItem.TopLeft()) ;CPoint ptIcon;ptIcon.x=rcIcon.left;ptIcon.y=rcIcon.top;pImgList->Draw(&dc, lvi.iImage, ptIcon, ILD_TRANSPARENT);}//---draw text ------------------------------------dc.ExcludeClipRect(rcIcon) ;CRect rcText(rc);if (!rcIcon.IsRectEmpty()){rcText.left = rcIcon.right;}LVCOLUMN lvc={0};lvc.mask = LVCF_WIDTH;LVCOLUMN lvcPre={0};lvcPre.mask = LVCF_WIDTH;int nColumn = GetHeaderCtrl()->GetItemCount();for (int i=0; i<nColumn; i++){//CRect rcColumn;//GetHeaderCtrl()->GetItemRect(i, &rcColumn);GetColumn(i, &lvc);if (i>0){GetColumn(i-1, &lvcPre);rcText.left += lvcPre.cx;//}rcText.right = rcText.left + lvc.cx;dc.SetBkMode(TRANSPARENT);if (lpDIS->itemState & ODS_SELECTED){dc.SetTextColor(RGB(255, 0, 0));}else{dc.SetTextColor(RGB(128, 128, 128));}CString szItem;szItem = GetItemText(lpDIS->itemID, i);dc.DrawText(szItem, &rcText, DT_LEFT|DT_SINGLELINE|DT_VCENTER);}dc.Detach();
- 15.VC(ui)-listctrl绘制(解决水平滚动文字重影bug)
- [vc]在鼠标移动过程中绘制矩形,有效解决重影问题
- 文字水平左滚动
- 解决jqgrid在IE使用水平滚动条BUG
- VC listctrl控件滚动条向下滚动
- 0.VC(ui)-hook-树形控件滚动条刷新bug
- javascript 水平文字垂直滚动
- C#文字水平滚动code
- 十九、UI-Grid 水平滚动
- 0.VC(ui)-hook-解决ComLbox不刷新的BUG
- IE6下DIV容器中双Float元素字符重影bug(IE6重复文字bug)
- Android ListView 滚动重影
- 关于文字水平方向向左滚动
- xMarquee jquery实现文字水平无缝滚动
- IOS实现文字水平无间断滚动
- html 文字、图片水平无限滚动
- IOS button 文字 重影
- VC 中改变ListCtrl每一行的文字颜色
- 9.8随笔
- Oracle 11g不能导出空表的问题解决
- tomcat多个端口的使用
- 谈一下单片机的键盘去抖问题
- Lodop
- 15.VC(ui)-listctrl绘制(解决水平滚动文字重影bug)
- 为什么创业公司会失败?
- Oracle 客户端查询乱码解决
- C++笔记
- 2011.9.8
- 创业公司进军海外市场的四个关键点
- 统计各个数字、空白符、及所有其他字符出现的次数
- poj 2394 Checking an Alibi
- 数据库语句复习