mfc编写一个flash播放器slider进度条的程序,在新建线程中,怎么实现进度条的更新

在新建线程中,我的想法是检测如果在播放,就读当前帧数,然后除以总帧数,乘以一个比例1000,即slider进度条的最大范围,然后得slider上面的位置,用SetPos得... 在新建线程中,我的想法是检测如果在播放,就读当前帧数,然后除以总帧数,乘以一个比例1000,即slider进度条的最大范围,然后得slider上面的位置,用SetPos得到当前的位置。然后Sleep()延迟一段时间, 就这样不断循环。
while(pInfo->pFlash->IsPlaying())
{
int npos=(pInfo->pFlash->CurrentFrame())*10000/(pInfo->pFlash->get_TotalFrames());
pInfo->pSlider->SetPos(npos);
Sleep(10);
} 其中pInfo是我定义的线程结构的一个指针。
编译成功,但是运行时,会在int npos=(pInfo->pFlash->CurrentFrame())*10000/(pInfo->pFlash->get_TotalFrames());这句话产生中断,npos的值居然是-858993460 一个很大的负值。我搞不懂为什么会这样~~是调用函数错了?还是指针没有指向正确的flash文件?求达人解答!!谢谢您了~~~
打错了~~不好意思~~~前后都是10000~~~
展开
 我来答
百度网友0974edce8
2010-05-13 · TA获得超过490个赞
知道小有建树答主
回答量:381
采纳率:0%
帮助的人:253万
展开全部
方法一:int npos =(int)((double)(pInfo->pFlash->CurrentFrame())*10000/(double)(pInfo->pFlash->get_TotalFrames()));

方法二:int npos=(pInfo->pFlash->CurrentFrame())/(pInfo->pFlash->get_TotalFrames())*10000;

在不把数据都改成double型,因为(pInfo->pFlash->CurrentFrame())*10000得下来的结果溢出了,double的最大值大概是184亿亿,所以一般来说你这个程序不会溢出了.

实在太大了,就用方法二+方法一:改转换为double型,先除后乘,就不会溢出了,
flally
2010-05-12 · TA获得超过208个赞
知道答主
回答量:133
采纳率:0%
帮助的人:113万
展开全部
你上面说×1000,程序里面是×10000,应该是溢出了吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式