概述
单击按钮后,创建线程
void CRandom_CreatDlg::OnButtonStart()
{
// TODO: Add your control notification handler code here
if (!image.isStart)
{
image.isStart=true;
pThread=AfxBeginThread(ThreadDisplay,&image,THREAD_PRIORITY_NORMAL);
}
else
image.isStart=false;
}
线程函数
UINT ThreadDisplay(LPVOID param)
{
ImageInfo *pImage=(ImageInfo*)param;
if (pImage->m_ImagePathAry.GetSize()==0)
{
return FALSE;
}
while(pImage->isStart)
{
srand(time(NULL));
CDC *pDC=pImage->pWnd->GetDC();
Graphics graph(pDC->GetSafeHdc());
int m_rand=rand()%pImage->m_ImagePathAry.GetSize();
WCHAR* path=pImage->m_ImagePathAry[m_rand].AllocSysString();
Image image(path);
graph.DrawImage(&image,pImage->rc.left,pImage->rc.top,pImage->rc.right-pImage->rc.left,pImage->rc.bottom-pImage->rc.top);
DelayTime(50);
}
return TRUE;
}
延时函数
void DelayTime(DWORD dwMilliseconds)
{
LARGE_INTEGER littmp;
LONGLONG lTimeBegin;
LONGLONG lTimeEnd;
double dMinus;
double dFreq;
double dTim;
QueryPerformanceFrequency(&littmp);
dFreq=(double)littmp.QuadPart;
QueryPerformanceCounter(&littmp);
lTimeBegin=littmp.QuadPart;
do
{
QueryPerformanceCounter(&littmp);
lTimeEnd=littmp.QuadPart;
dMinus=(double)(lTimeEnd-lTimeBegin);
dTim=dMinus/dFreq;
} while (dTim<dwMilliseconds*0.001);
}
现在出现的情况就是,开始线程后,我自己观察了下,大概第一张图片和第二章图片之间的间隔是我设置的50毫秒,之后每张图片的显示都是1秒左右,很奇怪,不知道是为什么?
最后
以上就是安详苗条为你收集整理的MFC 线程内延时问题的全部内容,希望文章能够帮你解决MFC 线程内延时问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复