编程大赛是模拟电梯运行,在对话框上动画显示电梯上下,其他就是按键了。
为了把电梯动画搞出来查了半天MSDN,手头又没有任何vc教材,可怜我这个MFC菜鸟啊。想的都是在onpaint()中画个图,动画就是每次改变偏移量(ontimer中调用invalidate重绘)。但是MSDN上的例程用上去会闪烁,还用的是createcompatible这种不熟悉的函数; 另一个例程简单一点,还是会闪烁。invalidaterect也是如此,被迫invalidaterect(false)使其不重绘,虽然有残像,看起也舒服点。
回来一查,什么双缓冲就出来了,有点复杂。我这个程序至于吗?再一试验,picture控件可以选择bitmap类型,直接显示图片。我就移动控件行不行呢?在ontimer中:
i++; CWnd* pwnd = GetDlgItem(IDC_STATIC3); pwnd->MoveWindow(350,i,40,40,true); this->InvalidateRect(CRect(350,400,0,500),true);
|
居然效果奇好毫无闪烁!
哎,一定要设置picture控件为bitmap类型。VC6的ide还是难用了点,要是当时用的vs2005肯定搞得出来。
阅读(571) | 评论(0) | 转发(0) |