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~~~ 展开
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~~~ 展开
2个回答
展开全部
方法一: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型,先除后乘,就不会溢出了,
方法二:int npos=(pInfo->pFlash->CurrentFrame())/(pInfo->pFlash->get_TotalFrames())*10000;
在不把数据都改成double型,因为(pInfo->pFlash->CurrentFrame())*10000得下来的结果溢出了,double的最大值大概是184亿亿,所以一般来说你这个程序不会溢出了.
实在太大了,就用方法二+方法一:改转换为double型,先除后乘,就不会溢出了,
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询