在SDI中如何清屏再重绘

Chendy1985 2008-08-04 02:31:01
我在OnDraw()函数里画了一些格子和点:

void Ctest_MFC_03View::OnDraw(CDC* pDC)
{
Ctest_MFC_03Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;

for(int i = 30; i < 600; i = i + 30)
{
pDC -> MoveTo(0, i);
pDC -> LineTo(600, i);
}
for(int j = 30; j < 600; j = j + 30)
{
pDC -> MoveTo(j, 0);
pDC -> LineTo(j, 600);
}

pDC -> TextOut(10, 10, "*");
}


想在一段时间后清屏再重绘,用UpdateWindows(),但是好像有问题,大家帮我看看吧

void Ctest_MFC_03View::OnDraw(CDC* pDC)
{
Ctest_MFC_03Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;

for(int i = 30; i < 600; i = i + 30)
{
pDC -> MoveTo(0, i);
pDC -> LineTo(600, i);
}
for(int j = 30; j < 600; j = j + 30)
{
pDC -> MoveTo(j, 0);
pDC -> LineTo(j, 600);
}

pDC -> TextOut(10, 10, "*");

Sleep(2000);
UpdateWindow();
pDC -> TextOut(40, 40, "*");
}
...全文
92 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Chendy1985 2008-08-04
  • 打赏
  • 举报
回复
哦,那我这个可不可以这样实现:
用SetTimer(),在这个函数下实现画图,就和上面的效果一样了。
这样的话怎么实现呢?
yyyapple 2008-08-04
  • 打赏
  • 举报
回复
一次只能绘制一副画,
可以通过x,y的变化反映动态,而不要试图在一次绘制中画一个动画
Chendy1985 2008-08-04
  • 打赏
  • 举报
回复
x,y和sleeping()等为什么要放在函数外面啊?
这样编译都不能通过的.....
yyyapple 2008-08-04
  • 打赏
  • 举报
回复
你的思路有问题:
x = 10, y = 10;
void Ctest_MFC_03View::OnDraw(CDC* pDC)
{
Ctest_MFC_03Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;

for(int i = 30; i < 600; i = i + 30)
{
pDC -> MoveTo(0, i);
pDC -> LineTo(600, i);
}
for(int j = 30; j < 600; j = j + 30)
{
pDC -> MoveTo(j, 0);
pDC -> LineTo(j, 600);
}

pDC -> TextOut(x, y, "*");

}

Sleep(2000);

x= 40; y = 40

Invalidate();

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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