对话框用一副BITMAP作为背景,上面有几个以位图作为背景的BITMAPBUTTON,但是在松开按钮的时候,对话框只会显示那几个按钮,而对话框其余的部分则变成灰色了,请问高手是什么原因????毕业设计急用!若能解决,小女子万分感谢!!!

解决方案 »

  1.   

    必须重载对话框的onCtrlColor()
    然后在里面针对每个控件提供背景.
      

  2.   

    问题是这样产生的.在OnPaint里面, 由于它隐含的调用了OnEraseBkGnd,而你又没有处理OnEraseBkGnd函数,这时就和窗口缺省的背景刷相关了.缺省的 OnEraseBkGnd操作使用窗口的缺省背景刷刷新背景(一般情况下是白刷),而随后你又自己重画背景造成屏幕闪动. 另外一个问题是OnEraseBkGnd不是每次都会被调用的.如果你调用Invalidate的时候参数为TRUE,那么在OnPaint里面隐含调用BeginPaint的时候就产生WM_ERASEBKGND消息,如果参数是FALSE,则不会重刷背景. 所以解决方法有: 
    1.用OnEraseBkGnd实现,不要调用原来的OnEraseBkGnd函数. 
    2.用OnPaint实现,同时重载OnEraseBkGnd,其中直接返回. 
    3.用OnPaint实现,但是要求刷新时用Invalidate(FALSE)这样的函数.
      

  3.   

    在对话框里面用OnPaint函数就可以绘制背景了
    对于按钮那一部分更有现成的东西可以用
    CButtonST 就可以实现透明按钮和位图按钮
    http://www.vckbase.com/
    http://www.codeproject.com/