C++的Sleep()很奇怪,出现新问题了

来源:百度知道 编辑:UC知道 时间:2024/05/22 03:14:00
一个难题,m_show是对话框中的一个文本框的变量,初始化为“你好”,
下面是一个Botton函数:
void CDianTiDlg::On9D()
{
m_show.Format("成功了");
UpdateData(false);
Sleep(5000);
m_show.Format("失败了");
UpdateData(false);
}

我的想法是:程序运行,程序的文本框显示“你好”,当点击Buttom时,
文本框显示变为“成功了”,5秒后,文本框显示“失败了”,但是结果是一直显示“你好”,请问高手,怎么能使更新及时显示?

DWORD WINAPI ThreadProc(
LPVOID lpParameter)
{

CEdit *std=(CEdit*)lpParameter;

::Sleep(5000);

std->SetWindowText("失败了");

return 1;
}

void CShowHelloDlg::OnButton1()
{

char *str="成功";

CEdit *std=((CEdit *)GetDlgItem(IDC_EDIT1));

std->SendMessage(WM_SETTEXT,0,(LPARAM)str);

CreateThread(NULL,0,ThreadProc,std,0,NULL);

}
这个是用线程的

如果像你那样在BUTTON里面直接::sleep(5000),那么导致窗口在你点击按钮的5秒时间内将无法处理消息

也可以用CTime

这里是java版块~
这个感觉应该用定时器实现CTimer?和线程没有什么关系吧