重写button控件,在按键得到焦点时刷一张图片,在按键失去焦点是刷另一张图片,屏幕会出现闪烁。我做的是wince编程。还有就是按键的刷白的那部分是在哪里实现的,为什么在我进入drawItem前按键底色就被刷成白色。怎么禁止mfc帮我刷底色

解决方案 »

  1.   

    重写button控件,在按键得到焦点时刷一张图片,在按键失去焦点是刷另一张图片,屏幕会出现闪烁。这是你重绘的地方有嵌套,绘到中间又重绘.
    举例:
          Ondraw(){   Invalidate();} 此类代码必然闪烁.
    我做的是wince编程。还有就是按键的刷白的那部分是在哪里实现的,为什么在我进入drawItem前按键底色就被刷成白色。怎么禁止mfc帮我刷底色超载:
    bool XXXX::OnEraseBkgnd()
    {
       return 1;
    }
      

  2.   

    不行啊。当点击按键时根本就不进入OnEraseBkgnd()函数
      

  3.   

    InValidataRect up++这个是什么意思。怎么用
      

  4.   

    试下在OnPaint里面做重绘...   在OnPaint中怎么进行重绘?能不能贴个代码看看
      

  5.   

    这里介绍的是PC
    不知CE上行不行
    http://blog.csdn.net/xianglitian/archive/2007/08/06/1728242.aspx
      

  6.   

    谁有重写过OnPaint,在OnPaint中怎么获取要重绘的按键信息。
      

  7.   

    把俩位图先画到存储器DC上,
    然后在需要的时候用 BitBlt
    贴到按钮上就行了,没有闪烁
      

  8.   

    重写控件可以解决这类问题,下载一个封装好的控件类来修改,想让它干啥就干啥,而且工作量比较小。
    推荐使用CButtonST,是非常强大,功能很全的CButton派生类!里面还有CStaticST,CBlendedButtonST,CBlendedStaticST等。作者:Davide Calabro
    邮箱地址:[email protected]
    个人主页:http://www.softechsoftware.it
    或者在csdn,pudn,codeproject几个地方搜一下,用实现特定功能的简单的button类也可以