我建了一个按钮,设置了BS_OWNERDRAW,在按钮绘图放在wm_paint并拦截了wm_erasebkgnd事件,现在的问题是当我在父窗口的文本框中输入文本时按钮的风格就变为系统默认的了(被覆盖了),此时必须拦截父窗口的wm_drawitem才能保证不被系统自动绘制.
我试了把不把按钮设置为BS_OWNERDRAW风格,那么在win7和win2003下当我在父窗口的文本框中输入文本时按钮的风格仍然是我自己绘制的,而在xp下就不行了,会被系统自动绘制而覆盖我绘制的风格.
请问自绘按钮的最佳方法是什么?有没有办法只在按钮中完成所有的绘制工作而不用管父窗口中的事件?

解决方案 »

  1.   

    不是的,我是用PowerBuilder自绘按钮的
      

  2.   

    这个是我通过继承CButton类去自绘的按钮控件...我想我这个应该符合你的要求...嘻嘻..
    http://download.csdn.net/download/allen_lanyuhai/3658158
      

  3.   

    现在之前的刷新问题已经解决了,但新的问题来了.
    我把按钮所在位置的父窗口背景截下来做按钮背景,以达到透明的效果,现在的问题是,如果按钮在一个tab控件中的不同tabpage里那么截到的背景就最上面的那个tabpage的背景,不知道有没有什么办法解决?