我有一个对话框,用来显示从服务器下载的图片,然后再在对话框的一个角落上用一个static控件的子类来显示视频,这样每次下载图片的时候,就会把视频控件遮盖住,为了能让static控件始终位于最上方,就把对话框属性 WS_CLIPCHILDREN设置为TRUE,不负责子控件绘制,但是这样static每次都不重绘,在对话框发生OnPaint的时候,static控件不重绘,就会出现重影的现象,我也重载了static子类的OnEraseBkgnd
BOOL CMyStatic::OnEraseBkgnd(CDC* pDC)
{
return TRUE;
}
但是没效果。该如何解决这个问题呢?如果不设置WS_CLIPCHILDREN,如何让static在最上方呢?
BOOL CMyStatic::OnEraseBkgnd(CDC* pDC)
{
return TRUE;
}
但是没效果。该如何解决这个问题呢?如果不设置WS_CLIPCHILDREN,如何让static在最上方呢?
InvalidateRect(&rect,true);刷新
显示图片的时候,我不是用的图片控件,在对话框的OnPaint里面用GDI+绘制的。
1 调整视频控件的编号试试
2 先用static控件背景色绘底色再绘新的内容
OnEraseBkgnd Return TRUE;是不重绘吧。
WS_CLIPCHILDREN
为了屏幕控件太多,不重绘,防止闪烁太厉害
和你Static控件位置有什么关系?你应该自己处理WM_SIZE事件,把变化重新写进OnSize里面把
主要是用GDI+绘制的图片是一个矩形的,static控件在这个矩形的范围内(做成画中画的效果),这样每次绘制图片的时候,图片就把static遮挡住了,看不到static
InvalidateRect(&rect,true);刷新
自己做了个 button,触发了InvalidateRect,但是static子控件没有重绘, 子控件设置了Notify属性。有关系吗?等会分不够再开个200分的帖子,大家来接分
恩,现在就是这样做的了,因为Dlg里面有很多业务,这样的话就要移到static控件类里面,工作量大啊。。不过还是想知道上面的答案,很多人说Invalidate 就可以了,但是我这样做没效果,不知道qq的画中画是怎么做成的?