使用AfxBeginThread显示一个UI来表示传输文件的进度。
伪代码为:
Button1_Clicked()
{
p=AfxBeginThread(包含UI的CWindThread类);
for(int i=0;i<100;i++)
{
Sleep(100);
p->PostThreadMessageW(WM_我的消息,0,i);//i用于设置UI的进度条的pos
}
}另一个类中的响应方法
WM_我的消息响应方法(..,i)
{
m_我的UI.m_progress.setpos(i);
}
问题是,在进行Sleep的循环内,一直阻塞了进程,用来显示进度的UI一直就没有显示,等循环完了才显示出来。应该怎么做才可以达到我的效果呢?
伪代码为:
Button1_Clicked()
{
p=AfxBeginThread(包含UI的CWindThread类);
for(int i=0;i<100;i++)
{
Sleep(100);
p->PostThreadMessageW(WM_我的消息,0,i);//i用于设置UI的进度条的pos
}
}另一个类中的响应方法
WM_我的消息响应方法(..,i)
{
m_我的UI.m_progress.setpos(i);
}
问题是,在进行Sleep的循环内,一直阻塞了进程,用来显示进度的UI一直就没有显示,等循环完了才显示出来。应该怎么做才可以达到我的效果呢?
你这个函数要即可返回,才能有界面绘制你在这里for 100 * 100, 界面当然不刷了在这个函数里设一个定时器,用定时器来发p->PostThreadMessageW(WM_我的消息,0,i);//i用于设置UI的进度条的pos吧