关于屏幕清空!!急

dragon8250 2003-10-17 05:47:30
我是在单文档客户区内实现绘图功能,实现方法:点击菜单栏上的功能选项后,给一个全局变量一个值,然后在view类的ondraw函数里进行判断后执行相应的程序段,我想实现屏幕清空,我的方法为:也是点击菜单上的“清屏”给变量 m_clean一个值,然后在ondraw里判断执行Invailidate();(m_mode为绘图判断变量),可是运行一次清屏后,整个程序变得有延迟,我请教一下原因,还有如果用句柄,另设一个函数:用pWnd->Invalidate();怎么写啊?
我的程序如下:
void CTestDialogView::OnScreenClean()
{
m_mode=0;
m_clean=1;
Invalidate();
}

else if(m_clean==1&&m_mode==0)
{

Invalidate();

}
...全文
63 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaoha2003 2003-10-18
  • 打赏
  • 举报
回复
去掉你OnDraw里的Invalidate();
或者用刷子重新刷一次你的客户区
dragon8250 2003-10-18
  • 打赏
  • 举报
回复
谢谢了!
我的msdn出了问题,麻烦那位可以写一下实现代码嘛?
enoloo 2003-10-18
  • 打赏
  • 举报
回复
还是用FillRect比较好.
enoloo 2003-10-18
  • 打赏
  • 举报
回复
好象是调用Invalidate()后,并不马上执行更新,而是当下一个WM_PAIN调用 或者 有Validate()调用时 才真正执行.
所以,你在OnDraw()中调用,会等到有下一个OnDraw()时才更新,所以看起来会有点延迟.
huanyun 2003-10-17
  • 打赏
  • 举报
回复
ondraw 里面调用 Invalidate();
会产生 WM_PAINT 再次调用ondraw
从而进入一个死循环 用FillRect吧

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧