您现在的位置:中国下载站学院中心网络编程Visual C++教程Visual C++开发技巧 → 文章列表

VC防止窗口和控件闪烁的方法

作者:佚名  来源:不详  发布时间:2006-12-29 13:42:59   

减小字体 增大字体

 
 
避免了闪烁。

  备注:

  重载WM_ERASEBKGND消息处理函数OnEraseBkgnd的方法,选择View->ClassWizard->classinfo选项卡:message filter下拉框:

  选择window,然后再选择message maps选项卡,在messages下拉框应该可以找到wm_erasebkgnd.双击添加.

  使用举例2:防止CListCtrl在拉动窗口时闪烁。

/* * No further full-erasing is required,
* to prevent screen flashing caused by background erase and view repaint.
* Only erase the blank area.
*/

BOOL CExListCtrl::OnEraseBkgnd(CDC* pDC) {
 //compute the holding-data-items area of this list control CRect rect;
 CPoint dataRgnTopLeftPoint;
 CPoint dataRgnBottomRightPoint;
 GetItemPosition(0 , &dataRgnTopLeftPoint);
 GetItemPosition(GetItemCount() , &dataRgnBottomRightPoint);
 if(!GetHeaderCtrl()->GetItemRect(GetHeaderCtrl()->GetItemCount()-1, rect)) return
 CListCtrl::OnEraseBkgnd(pDC);
 dataRgnBottomRightPoint.x = rect.right;
 rect.SetRect(dataRgnTopLeftPoint, (CPoint)(dataRgnBottomRightPoint - CPoint(2,2)));
 ClientToScreen(dataRgnRect);
 //compute and erase the blank area. Using the Marco. ERASE_BKGND_BEGIN;
 ADD_NOERASE_RECT(dataRgnRect);
 ERASE_BKGND_END(pDC, GetBkColor());
 return false;
}

  说明:CListCtrl在拉动的时候,会前以背景色重刷背景,再在上面绘制有数据的Items,而没有数据的区域则保持背景色。因此,如果在BOOL CExListCtrl::OnEraseBkgnd(CDC* pDC) 函数中简单的return false,那么没有数据的区域将显示不正常

上一页  [1] [2] 


在百度中搜索更多VC防止窗口和控件闪烁的方法相关网页 转贴于:中国下载站

  • 上一篇文章:C/C++返回内部静态成员的陷阱
  • 下一篇文章:网站重构 CSS样式表的优化与技巧
  • 阅读统计:[]
  • 中国下载站】【设为主页】【收藏本页】【打印本文】【回到顶部】【关闭此页

    相关文章
    文章评论(评论内容只代表网友观点,与本站立场无关!)

    用户名: 查看更多评论

    分 值:100分 85分 70分 55分 40分 25分 10分 0分

    内 容:

             (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码


    设为首页 - 关于我们 - 广告服务 - 网站地图 - 加入收藏 - 网站声明 - 网站帮助 - 友情链接

    • Copyright (C) 2006-2008 www.cndownz.com All Rights Reserved.
      中国下载站 版权所有. 粤ICP备05141802号. 对本站有任何建议、意见或投诉,请来信:cndownzcom@yahoo.com.cn.
      喜欢中国下载站(cndownz.com),请把中国下载站(cndownz.com)告诉你QQ上的5位好友,多谢支持!