首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

UpdateData(FALSE)在循环里面出现的有关问题

2012-02-08 
UpdateData(FALSE)在循环里面出现的问题for(i0imi++){m_yiducishui+1UpdateData(FALSE)}m_yiducish

UpdateData(FALSE)在循环里面出现的问题
for(i   =   0;i   <   m;i++)
{
m_yiducishu   =   i+1;
UpdateData(FALSE);
}

m_yiducishu关联到IDC_EDIT1上
每次执行时候,输入m=20则IDC_EDIT1显示数值只变化一次

请问这是为什么

[解决办法]
是因为循环太快了。你试试下面的代码
for(i = 0;i < m;i++)
{
Sleep(1000);
m_yiducishu = i+1;
UpdateData(FALSE);
}

[解决办法]
用定时器,这种循环里面阻塞了消息循环,界面得不到更新的机会。
[解决办法]
线程
[解决办法]
for(i = 0;i < m;i++)
{
m_yiducishu = i+1;
UpdateData(FALSE);
}
这种写法会导致界面没有时间更新。
换成如下写法吧
for(i = 0;i < m;i++)
{
m_yiducishu = i+1;
UpdateData(FALSE);
MSG msg;
while( PeekMessage( &msg, 0, 0, 0, PM_REMOVE ) )
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
自己推动消息循环就ok了。

热点排行