怎样更新对话窗的图形?(入门级)
我在一个基于对话窗的程序中用了几个CDC的函数,有画线,画icon等。相应在OnPaint()中调用。但是在加入或删除东西(例如icon)时,总是不能自动更新。我就加入了RedrawWindow();OnPaint();两个函数。用来更新界面,多番尝试,二者缺一就达不到理想效果。但是又有一个问题,画面闪烁得很厉害!不知道大家用什么方法的。请指教。 问题点数:100、回复次数:7Top
1 楼newlily2000()回复于 2002-08-23 08:25:16 得分 0
gzTop
2 楼fz_zhou(vcfan)回复于 2002-08-23 08:29:14 得分 20
在你想更新的时候调用Invalidate(),应该可以更新你的图形!
Top
3 楼spwnihao(╭∩╮(︶⌒︶)╭∩╮鄙视一切)回复于 2002-08-23 08:35:51 得分 20
InvalidataRect(CRect rect);
更新你要刷新的区域,可以达到你的效果,由于更新的大小由rect大小来控制所以,当rect不太大时,就没有闪烁现象Top
4 楼dozoo(飞来峰上有晴天)回复于 2002-08-23 08:39:57 得分 20
画面闪烁可用如下方法解决:
加入OnEraseBkgnd()函数,并修改其返回值为TRUE.
BOOL T2_2::OnEraseBkgnd(CDC* pDC)
{
return TRUE;
//return CDialog::OnEraseBkgnd(pDC);
}Top
5 楼guangde(光光)回复于 2002-08-23 08:44:07 得分 20
在绘图结束后调用Invalidate()个更新整个客户区,调用InvalidataRect(CRect rect)更新指自定的区域,大小由你自己定。更据你自己的情况选择一个函数。Top
6 楼ynli2002(阿男)回复于 2002-08-23 08:53:42 得分 20
用Invalidate()更新整个区域
用InvalidataRect(CRect rect)更新你指定的区域
Top
7 楼on_shift(小迷糊)回复于 2002-08-23 13:22:21 得分 0
谢谢各位,送分Top




