
求助MFC大神 重绘的疑问
voidCoutput_textView::OnDraw(CDC*pDC){CSdafsadfasdfDoc*pDoc=GetDocument();ASSERT_VALI...
void Coutput_textView::OnDraw(CDC* pDC)
{
CSdafsadfasdfDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
SetTimer(1,100,NULL); //每隔100毫秒输出一个hello
pDC->TextOut(0,y,"hello"); //y的初值为0,在构造函数里面已经定义了
}
/////////////////////////////////////////////////////////////////////////////////////
void Coutput_textView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
y=y+10; //纵坐标改变10
Invalidate(true); //每100毫秒重绘一次
CView::OnTimer(nIDEvent);
}
现在的效果是每隔100毫秒,“hello”就输出一次,每一次的位置都向下面移动一些,但是整个MFC界面就只有1个“hello”了
我想输出一整列的“hello”,类似于下面的效果,每隔100毫秒就多一个hello
hello
hello
hello
hello
hello
hello
hello
hello
……
该怎么做呢?求解 展开
{
CSdafsadfasdfDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
SetTimer(1,100,NULL); //每隔100毫秒输出一个hello
pDC->TextOut(0,y,"hello"); //y的初值为0,在构造函数里面已经定义了
}
/////////////////////////////////////////////////////////////////////////////////////
void Coutput_textView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
y=y+10; //纵坐标改变10
Invalidate(true); //每100毫秒重绘一次
CView::OnTimer(nIDEvent);
}
现在的效果是每隔100毫秒,“hello”就输出一次,每一次的位置都向下面移动一些,但是整个MFC界面就只有1个“hello”了
我想输出一整列的“hello”,类似于下面的效果,每隔100毫秒就多一个hello
hello
hello
hello
hello
hello
hello
hello
hello
……
该怎么做呢?求解 展开
1个回答
展开全部
首先,SetTimer放到OnDraw中,是错误的,这会造成定时器频繁反复创建,推荐放到初始化函数或者菜单/按钮响应函数中。
每100m秒多一个hello,等于10秒钟之后,OnDraw要画1000个hello,因此,定制器只是应该做累加(刷新可以优化为局部优化InvalidateRect),而OnDraw里面应该这样:
void Coutput_textView::OnDraw(CDC* pDC)
{
CSdafsadfasdfDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
int n=y/10;//这里应该有个初始值记录,假设为y0
for(int i=0;i<n;i++)
pDC->TextOut(0,y0+10+i*10,"hello"); //如果y的初值为0,可以去掉y0了
}

2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询