毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 开发语言 >> 正文

InvalidateRect刷新局部控件的源代码

更新时间:2012-11-29:  来源:毕业论文

InvalidateRect刷新局部控件的源代码
我的dialog上有九个大小一样的picture控件作为缩略图显示用,另外有个大点的picture控件作为预览界面,现在想只刷新这九个大小一样的控件,我是这样用的:

C/C++ code
?1234 CRect rect; GetDlgItem(IDC_THUMB_1)->GetClientRect(&rect);     //IDC_THUMB_1为九个控件中的一个 InvalidateRect(&rect, TRUE);

       在onPaint中是这样写的:

C/C++ code
?123456 void CThumbnailDlg::OnPaint() {     CPaintDC dc(this); // device context for painting         DrawThumbnails();    //这个函数用来在九个控件上更新图片 }

       我现在是调用InvalidateRect后就跑到onPaint中,然后调用DrawThumbnails来重画九个控件中的图,但是调用InvalidateRect(&rect, TRUE)之后每次重绘时都没有清除控件上之前的背景内容,而是覆盖上去的,这样会造成如果下一张图没有画满一个控件会看到上一张图没被覆盖的内容。就连我指定的那个控件IDC_THUMB_1都没有先清除背景内容,InvalidateRect最后一个参数为TRUE应该会清除呀,但是现在没有,不知道为什么?如果调用Invalidate(TRUE)就可以在绘图时先把控件上内容清除然后绘图,但是这样会刷新我不想更新的那个大点的预览界面。
        请大家告诉我怎么才能刷新这九个控件的时候能先清除背景的内容,或是有别的替代方案。先谢谢大家,希望大家踊跃围观!

父窗体风格里面加上WS_CLIPCHILDREN

然后Invalidate(TRUE)父窗体的时候,子控件就不会刷新了。
如果要刷新的话,用子控件Invalidate来控制刷新。

Create的时候把style加入 GetDlgItem(IDC_THUMB_1)->Invalidate();

走消息队列的。。


RedrawWindow看看

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。