问下关于MFC中 SetTimer() 和 KillTimer() 的使用

intCWhirl_LetterView::OnCreate(LPCREATESTRUCTlpCreateStruct){if(CView::OnCreate(lpCre... int CWhirl_LetterView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;

// TODO: Add your specialized creation code here
if(mouse_distance <= 250)
{
SetTimer(1,-3.96 * mouse_distance + 1000,NULL);
}

return 0;
}
其中mouse_distance 是一个一直变化的值,它随着鼠标的移动的位置而变化,在OnMouseMove()中这样设置:
mouse_distance = sqrt((point.x - 200)*(point.x - 200) + (point.y - 200)*(point.y - 200));
我想请问一下,如何做到定时器中第二个参数随着鼠标移动的位置的变化而变化,即是时间间隔不断变化,是每移动一次就得KillTimer(),然后再重新调用SetTimer()吗?还是说用同一个定时器就可以了?当mouse_distance大于250的时候,我想停用计时器,该怎么写呢?KillTimer()应该放在哪个函数中?
如果是每次移动都得KillTimer(),然后再重新调用SetTimer(),那应该怎么写
展开
 我来答
cy冷月
2010-09-01 · TA获得超过280个赞
知道小有建树答主
回答量:179
采纳率:0%
帮助的人:194万
展开全部
添加WM_MOUSEMOVE 的消息,
在函数OnMouseMove中添加代码:
mouse_distance = sqrt((point.x - 200)*(point.x - 200) + (point.y - 200)*(point.y - 200));
if(mouse_distance <= 250)
{
/*这里的1是Timer的标识,最好设置为WM_USER+一个常数,避免与程序的其他标识冲突*/
SetTimer(1,-3.96 * mouse_distance + 1000,NULL);
}
else
KillTimer(1);//这里的1是上面Timer的标识。

SetTimer使用已有的timer的标识创建的时候会自动killtimer,然后使用新的时间设置计时器。
苏州蓝晓生物科技有限公司_
2022-08-05 广告
苏州蓝晓生物科技有限公司。标准化核心产品:公司拥有完整的琼脂糖介质、葡聚糖介质、聚甲基丙烯酸酯介质生产线,年产分离介质50000L,产品质量稳定并达到国际领先水平。核心优势:公司核心技术人员拥有近二十年不同基质的基球开发和官能化的丰富技术经... 点击进入详情页
本回答由苏州蓝晓生物科技有限公司_提供
百度网友76c7e66
2010-08-29 · TA获得超过245个赞
知道小有建树答主
回答量:220
采纳率:0%
帮助的人:211万
展开全部
在OnMouseMove()里加:

KillTimer()
if(mouse_distance < 250)
{
SetTimer()
}

参数自己填。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式