+ -
当前位置:首页 → 问答吧 → MFC对话框问题

MFC对话框问题

时间:2011-11-29

来源:互联网

MFC对话框中我定义了一个函数,A
A()
{
if(条件)
 m_str+="nihao";
else
{
 m_ProcessRun=L"";
 sleep(1000);
 m_str+=“你好”;
}
我想让对话框中显示“nihao”一秒钟之后变为“你好”;可是运行的时候直接显示“你好”,怎么回事啊??

作者: liulu132   发布时间: 2011-11-29

先显示nihao,然后创建一个定时器Timer,时间设置为1000毫秒,收到Timer消息后更新文字为"你好"

作者: xrunning   发布时间: 2011-11-29

详细点好吗?谢谢

作者: liulu132   发布时间: 2011-11-29

消息处理是顺序的,同步的,不管你怎么写sleep最后结果显示都一样的。

作者: yujie_v   发布时间: 2011-11-29

那怎么办啊

作者: liulu132   发布时间: 2011-11-29

Sleep(1000);会阻塞windows的消息,你的方法是不可行的,正如LS上,要用定时器

作者: keiy   发布时间: 2011-11-29

给你个例子:
C/C++ code

VOID   CALLBACK   FooTimerFun(   HWND,   UINT,   UINT,   DWORD   ) 
{ 
bExitApp   =   TRUE; 
} 



void Ctest1Dlg::OnBnClickedButton11()
{
    // TODO: 在此添加控件通知处理程序代码
    m_str="nihao";
    UpdateData(false);

MSG   msgFoo; 
::SetTimer(   NULL   ,   uiTimerID   ,   1000   ,   FooTimerFun   ); 
while(   !bExitApp   &&   GetMessage(   &msgFoo   ,   NULL   ,   0   ,   0   )   ) 
{ 
TranslateMessage(   &msgFoo   ); 
DispatchMessage(   &msgFoo   ); 
} 
::KillTimer(   NULL   ,   uiTimerID   ); 
     m_str="你好";
UpdateData(false);
}


作者: keiy   发布时间: 2011-11-29

VOID CALLBACK FooTimerFun( HWND, UINT, UINT, DWORD ) 

bExitApp = TRUE;  

这个函数在哪定义啊?

作者: liulu132   发布时间: 2011-11-29