关于网友提出的“ MFC窗口背景刷怎么弄成透明色?”问题疑问,本网通过在网上对“ MFC窗口背景刷怎么弄成透明色?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: MFC窗口背景刷怎么弄成透明色?
描述: 窗口在刷新的时候总是先刷白一下再绘图 视觉上就是闪一下 该怎么办啊?
我已经用了
BOOL CTsylqDlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
//return CDialog::OnEraseBkgnd(pDC);
return TRUE;
}
但是没有效果 所以我想在初始化窗口的时候设置窗口背景刷的颜色为透明色 该怎么做呢?
或者有没有其他的方法呢?
谢谢大家~~~!!!!
解决方案1: 这个肯定是要上双缓冲的 上了双缓冲 在OnEraseBkgnd 中renturn false
解决方案2: 楼主两点要说明:
1.OnEraseBkgnd响应从主窗口,到CTsylqDlg,层层都要响应到的。
2.记得绘制的时候采用双缓冲机制。
这两点是解决你的闪烁的主要方式!
解决方案3:纠正一下,根据MSND的说法,
重载OnEraseBkgnd ,其内返回值有如下定义:
返回1(TRUE) 接受WM_ERASEBKGND的消息,但不会进行背景擦除
返回0(FALSE)接受WM_ERASEBKGND的消息,但 会进行背景擦除并重新绘制背景。所以,
方案1:你要在OnEraseBkgnd 之外的地方,不擦除背景的情况下用Invalidate(0);
表示区域有效,保证绘制上的位图能完全覆盖上一张作为背景的位图,那样就不会有白屏闪烁的出现,
2.方案2: 即大家所说的双缓冲。解决方案4: 采用双缓冲机制是正道:
说白了也就是在内存中画,然后再贴到界面上.您google上搜一下,有许多例子.
以上介绍了“ MFC窗口背景刷怎么弄成透明色?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2344790.html